Principales respuestas
select que me devuelva solo digitos

Pregunta
-
saludos,tengo una columna que me devuelva datos asi en sql
632-2 * 711-2 * 712-2 * 801-2 802-2 90S-2 90L1-2 90L2-2 100L-2
de que forma puedo hacer una query que me retorne solo los primeros dos digitos cuando hay tres digitos juntos y de ahi sigue el guion ó los digitos compeltos antes de que le siga una letra a los digitos, beuno este ería el resultado esperadod e lso datos de arriba
63 71 71 80 80 90 90 90 100
gracias
Respuestas
-
creo que falta ponerle ltrim(rtrim(campo
Ah, puede ser. Fíjate en donde te dije "...o un carácter no visible entre medias...". Desde luego, los espacios en blanco (que se quitan con el ltrim) contarían como "caracteres no visibles" a estos efectos. En consecuencia procede que apliques lo de "afinas lo que sea necesario" (es decir, poner el LTrim). El RTrim creo que sobra.- Marcado como respuesta Laura CeglzModerator viernes, 23 de septiembre de 2016 21:55
Todas las respuestas
-
-
Puedes hacer algo parecido a esto:
select case when campo like '[0-9][0-9][0-9]-%' then left(campo,2) when campo like '[0-9][0-9][0-9]%' then left(campo,3) else left(campo,2) end as Campo from laTabla
hola gracias , me falla en este caso
100L-2
solo sale
1
-
Lo acabo de probar escribiendo lo siguiente en SSMS y ejecutando la consulta:
declare @campo nvarchar(10) = '100L-2' select case when @campo like '[0-9][0-9][0-9]-%' then left(@campo,2) when @campo like '[0-9][0-9][0-9]%' then left(@campo,3) else left(@campo,2) end as Campo
Y sale correctamente 100 como resultado.
Revisa bien el dato, a ver si es que tienes (por ejemplo) una o en lugar de un cero, o un carácter no visible entre medias. En cualquier caso, no puede salir "1", porque los tres casos del "case" tienen un "left" que devuelve 2 o 3 caracteres, no hay ninguno que devuelva un solo carácter.
Y si a pesar de todo no funciona, pues corriges lo que haga falta en la sentencia. Por eso puse "algo parecido a" al darte la respuesta: no se trata de que lo copies exacta y literalmente, sino de que te sirva de inspiración para hacerte a la idea de qué vía podría seguirse para conseguir el resultado deseado. A partir de ella, ya reajustas y afinas lo que sea necesario para que satisfaga todos los casos que se te presenten.
-
a mi no me sale igual
el campo es un varchar de 20
creo que falta ponerle ltrim(rtrim(campo- Editado palermo_software viernes, 9 de septiembre de 2016 21:49
-
creo que falta ponerle ltrim(rtrim(campo
Ah, puede ser. Fíjate en donde te dije "...o un carácter no visible entre medias...". Desde luego, los espacios en blanco (que se quitan con el ltrim) contarían como "caracteres no visibles" a estos efectos. En consecuencia procede que apliques lo de "afinas lo que sea necesario" (es decir, poner el LTrim). El RTrim creo que sobra.- Marcado como respuesta Laura CeglzModerator viernes, 23 de septiembre de 2016 21:55