Funciones SUBSTR y AT combinadas
Publicado por ludigova (2 intervenciones) el 22/12/2010 15:17:49
Buenos Días
Tengo un pequeño problema que no he sabido como resolver con el uso de las funciones SUBSTR y AT, cuando las uso combinadas directamente en un SQL.
Les pongo un ejemplo de lo que se y de lo que necesito resolver
Se que puedo usar estas funciones de las siguiente manera
Cadena = 'Hola como Estan'
MiCadena = substr(Cadena,1,AT(" ",CADENA)-1)
Entonces MiCadena contendría la palabra "Hola"
Esto funciona perfectamente, no tengo problemas con esto
Ahora bien supongamos que tengo una tabla llamada Productos con estos datos
Codigo Descripcion
12345 Tornillo para gypson
12346 Tornillo infinito
12347 Clavos de Acero
12348 Clavos de 2 pulgados
12349 Gypson 3x2x0.5
Necesito obtener la primer palabra, es decir hasta que el primer espacio en blanco, del campo Descripcion.
A simple vista se ve que la primer palabra es de longitud variable por lo que utilizo la función AT para saber donde esta el primer espacio es blanco y el valor devuelto lo uso como el tercer parámetro de la función SUBSTR.
D icho lo anterior yo hago una consulta de la siguiente manera:
SELECT DISTINCT SUBSTR(Descripcion, 1,AT(" ",Descripcion)-1) FROM Productos
Al ejecutarlo yo esperaría que me retornara
Tornillo
Clavos
Gypson
Pero me esta regresando solo las primeras letras como si no encontrará el espacio en blanco en la Descripcion. Por lo que que ejecute el siguiente SQL para comprobarlo
SELECT Descripcion, AT(" ",Descripcion) as DondeFROM Productos
y me regresa la siguiente informacion:
Descripcion Donde
Tornillo para gypson 9
Tornillo infinito 9
Clavos de Acero 7
Clavos de 2 pulgados 7
Gypson 3x2x0.5 7
Al ejecutar esto compruebo que la función AT hace lo que tiene que hacer. Nuevamente compruebo con una consulta similar
SELECT Descripcion, AT(" ",Descripcion) as Donde, SUBSTR(Descripcion,1, AT(" ",Descripcion)-1) Palabra FROM Productos
Descripcion Donde Palabra
Tornillo para gypson 9 T
Tornillo infinito 9 T
Clavos de Acero 7 C
Clavos de 2 pulgados 7 C
Gypson 3x2x0.5 7 G
Como pueden ver el al usar estas funciones combinadas DIRECTAMENTE en una CONSULTA, el resultado no es el esperado. Sin embargo fuera de una consulta funciona perfectamente.
Si alguien me puede ayudar o dar alguna explicación que me aclare porque fox se comporta de esta manera y que puedo hacer para solucionarlo.
Les agradezco la atención y la ayuda.
Tengo un pequeño problema que no he sabido como resolver con el uso de las funciones SUBSTR y AT, cuando las uso combinadas directamente en un SQL.
Les pongo un ejemplo de lo que se y de lo que necesito resolver
Se que puedo usar estas funciones de las siguiente manera
Cadena = 'Hola como Estan'
MiCadena = substr(Cadena,1,AT(" ",CADENA)-1)
Entonces MiCadena contendría la palabra "Hola"
Esto funciona perfectamente, no tengo problemas con esto
Ahora bien supongamos que tengo una tabla llamada Productos con estos datos
Codigo Descripcion
12345 Tornillo para gypson
12346 Tornillo infinito
12347 Clavos de Acero
12348 Clavos de 2 pulgados
12349 Gypson 3x2x0.5
Necesito obtener la primer palabra, es decir hasta que el primer espacio en blanco, del campo Descripcion.
A simple vista se ve que la primer palabra es de longitud variable por lo que utilizo la función AT para saber donde esta el primer espacio es blanco y el valor devuelto lo uso como el tercer parámetro de la función SUBSTR.
D icho lo anterior yo hago una consulta de la siguiente manera:
SELECT DISTINCT SUBSTR(Descripcion, 1,AT(" ",Descripcion)-1) FROM Productos
Al ejecutarlo yo esperaría que me retornara
Tornillo
Clavos
Gypson
Pero me esta regresando solo las primeras letras como si no encontrará el espacio en blanco en la Descripcion. Por lo que que ejecute el siguiente SQL para comprobarlo
SELECT Descripcion, AT(" ",Descripcion) as DondeFROM Productos
y me regresa la siguiente informacion:
Descripcion Donde
Tornillo para gypson 9
Tornillo infinito 9
Clavos de Acero 7
Clavos de 2 pulgados 7
Gypson 3x2x0.5 7
Al ejecutar esto compruebo que la función AT hace lo que tiene que hacer. Nuevamente compruebo con una consulta similar
SELECT Descripcion, AT(" ",Descripcion) as Donde, SUBSTR(Descripcion,1, AT(" ",Descripcion)-1) Palabra FROM Productos
Descripcion Donde Palabra
Tornillo para gypson 9 T
Tornillo infinito 9 T
Clavos de Acero 7 C
Clavos de 2 pulgados 7 C
Gypson 3x2x0.5 7 G
Como pueden ver el al usar estas funciones combinadas DIRECTAMENTE en una CONSULTA, el resultado no es el esperado. Sin embargo fuera de una consulta funciona perfectamente.
Si alguien me puede ayudar o dar alguna explicación que me aclare porque fox se comporta de esta manera y que puedo hacer para solucionarlo.
Les agradezco la atención y la ayuda.
Valora esta pregunta


0