Principales respuestas
USO DE :LTRIM(RTRIM(REPLACE

Pregunta
-
Hola buenos días:
de un campo de nombre campo1 y de la tabla mytable
necesito extraer la informacion, la informacion del campo1, viene así:
posición: 1|2|3|4|5|6|7|
C F 1 0 0 0 2 --> 7 CARACTERES, A PARTIR DE LA POSICION 1
E 0 2 0 1 --> 5 CARACTERES, A PARTIR DE LA POSICION 3
A 2 1 0 2 3 --> 6 CARACTERES, A PARTIR DE LA POSICION 2
SON 2000 REGISTROS
GRACIAS POR SU AYUDA.
Respuestas
-
¿Podrías adjuntarnos valores "reales"?, el error se produce porque el formato de los valores existentes en tu tabla discrepan con el formato que nos adjuntaste inicialmente y que yo tomo para hacer la consulta, fíjate:
DECLARE @mytable table (campo1 varchar(100)) INSERT INTO @mytable VALUES ('AAAACF10002CCCCC'), ('AAAAAAE0201CCCCC'), ('AAAAAA21023CCCCC') SELECT SUBSTRING(t.campo1, PATINDEX('%[A-Z][0-9]%', t.campo1), PATINDEX('%[0-9][A-Z]%', t.campo1) - (PATINDEX('%[A-Z][0-9]%', t.campo1) - 1)) Campo1 FROM @mytable t
Agrega a la lista valores reales, y para cada caso que discrepe con el valor esperado detalla el criterio para recuperar la subcadena.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Moderador M martes, 25 de julio de 2017 21:11
Todas las respuestas
-
Para recuperar parte de una cadena especificando el inicio y longitud puedes utilizar la función SUBSTRING(expression, start, length)
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
-
Intenta con la siguiente consulta:
SELECT SUBSTRING(t.campo1, PATINDEX('%[A-Z][0-9]%', t.campo1), PATINDEX('%[0-9][A-Z]%', t.campo1) - (PATINDEX('%[A-Z][0-9]%', t.campo1) - 1)) Campo1 FROM mytable t
- ¿El prefijo A y el sufijo Z son valores constantes?, en la consulta asumo que no, de serlo sería simple reemplazar el prefijo y sufijo por una cadena de longitud cero.
Coméntanos los resultados.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
-
¿Podrías adjuntarnos valores "reales"?, el error se produce porque el formato de los valores existentes en tu tabla discrepan con el formato que nos adjuntaste inicialmente y que yo tomo para hacer la consulta, fíjate:
DECLARE @mytable table (campo1 varchar(100)) INSERT INTO @mytable VALUES ('AAAACF10002CCCCC'), ('AAAAAAE0201CCCCC'), ('AAAAAA21023CCCCC') SELECT SUBSTRING(t.campo1, PATINDEX('%[A-Z][0-9]%', t.campo1), PATINDEX('%[0-9][A-Z]%', t.campo1) - (PATINDEX('%[A-Z][0-9]%', t.campo1) - 1)) Campo1 FROM @mytable t
Agrega a la lista valores reales, y para cada caso que discrepe con el valor esperado detalla el criterio para recuperar la subcadena.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta Moderador M martes, 25 de julio de 2017 21:11