SQL - extraer un número de una cadena de texto en sql server

 
Vista:

extraer un número de una cadena de texto en sql server

Publicado por deca01 (2 intervenciones) el 29/04/2024 15:24:09
Buen día, gusto en saludarlos.

Ante que todo quiero comentarles que soy un usuario principiante y probablemente, mi consulta no se ajuste a los temas escalados en el foro, así que de antemano pido disculpas por las molestias causadas. Con relación a mi consulta, recibi un archivo en el que uno de los valores que requiero para mi análisis (cuenta cliente) esta embebido en una frase que esta en el campo ASUNTO:

ASUNTO
boleta folio: 0111111111 fecha de vencimiento: 21-mar-2024 cliente: 123123123 numero: 11111111111
factura folio: 0022222222 fecha de vencimiento: 14-abr-2024 cliente: 2323232 numero : 2222222222
factura folio: 0033333333 fecha de vencimiento: 14-abr-2024 cliente: 5555 numero: 33333333333

Intente hacer la extracción utilizando una sentencia que arme en función a unos tutoriales que vi en YouTube sin embargo, debido a que el número de cliente no posee la misma longitud, longitud entre 1 a 10 posiciones,, el resultado en muchos de los casos trae letras de la palabra número.

SELECT ,asunto,substring(asunto,charindex ('e:',asunto)+2,10) as cuenta
FROM [IMP].[dbo].[DATA_VENTAS]

Agradezdo de antemano todo el apoyo que me pueda prestar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 2
Ha aumentado su posición en 26 puestos en SQL (en relación al último mes)
Gráfica de SQL

extraer un número de una cadena de texto en sql server

Publicado por Alejandro (15 intervenciones) el 30/04/2024 17:39:42
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Necesitas saber la posición de la palabra "cliente: " y la posición de la palabra " numero:".
Si restas la posición de la palabra numero a la posición de la palabra clientes puedes extraer desde donde inicia "cliente: " hasta donde comienza " numero:".
Luego solo remplazas la palabra "cliente: " por vació y el resultado es el numero deseado.

1
2
3
4
5
6
7
8
SELECT REPLACE(
    SUBSTRING('factura folio: 0033333333 fecha de vencimiento: 14-abr-2024 cliente: 5555 numero: 33333333333',
        PATINDEX('%cliente: %', 'factura folio: 0033333333 fecha de vencimiento: 14-abr-2024 cliente: 5555 numero: 33333333333'),
        PATINDEX('% numero:%', 'factura folio: 0033333333 fecha de vencimiento: 14-abr-2024 cliente: 5555 numero: 33333333333')-
        PATINDEX('%cliente: %', 'factura folio: 0033333333 fecha de vencimiento: 14-abr-2024 cliente: 5555 numero: 33333333333')
    ),
    'cliente: ', ''
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

extraer un número de una cadena de texto en sql server

Publicado por deca01 (2 intervenciones) el 01/05/2024 17:36:24
Buen día Alejandro,

Gusto en saludarte y espero que todo este muy bien por allá. Seguí tus indicaciones logre hacer la extracción del dato que necesito para continuar mi estudio. Muchas gracias por el apoyo prestado. Igualmente, comparto el query final que ejecute para que sirva de apoyo a otros usuarios con el mismo inconveniente:

SELECT TOP 10 asunto, PATINDEX ('%cliente: %', ASUNTO ) INICIAL, PATINDEX ('%numero%', ASUNTO ) FINAL,
REPLACE (SUBSTRING (ASUNTO, (PATINDEX ('%cliente: %', ASUNTO)), (PATINDEX ('% numero%', ASUNTO )- (PATINDEX ('%cliente: %', ASUNTO)))),'cliente: ', '') AS CUENTA
FROM [IMP_DIST].[dbo].[CICLO_1_FEB_FACT]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar