Extraer número de un campo de cadena, incluyendo decimales, en SQL Server 18.
Quiero extraer números de un campo de texto que incluye decimales en SQL.
Mi código actual:
substring(a.LastTitrate,patindex('%[0-9]%', a.LastTitrate),patindex('%[0-9][^0-9]%', a.LastTitrate)-patindex('%[0-9]%', a.LastTitrateCumulativeVolume)+1) as mL
Mis resultados actuales:
0.542 mls 0
0.042 mls 0
0.317 mls 0
Resultado deseado:
0.542 mls 0.542
0.042 mls 0.042
0.317 mls 0.317
davy.ai
Para extraer el número de un campo de texto que contiene decimales en SQL, puedes utilizar el siguiente código:
Explicación:
PATINDEX('%[0-9.,]%', a.LastTitrate)
encuentra la primera ocurrencia de un dígito del 0 al 9, un punto o una coma en el campo LastTitrate.SUBSTRING(a.LastTitrate, PATINDEX('%[0-9.,]%', a.LastTitrate))
obtiene la subcadena comenzando desde el primer dígito, punto o coma.PATINDEX('%[^0-9.,]%', SUBSTRING(a.LastTitrate, PATINDEX('%[0-9.,]%', a.LastTitrate), LEN(a.LastTitrate)))
encuentra la primera ocurrencia de un carácter que no sea un dígito, un punto o una coma después de la subcadena extraída anteriormente.PATINDEX('%[0-9.,]%', a.LastTitrate)
encuentra la primera ocurrencia de un dígito, un punto o una coma desde el inicio del campo.PATINDEX('%[^0-9.,]%', SUBSTRING(a.LastTitrate, PATINDEX('%[0-9.,]%', a.LastTitrate), LEN(a.LastTitrate))) + PATINDEX('%[0-9.,]%', a.LastTitrate) - 1
calcula la posición final de la subcadena que queremos extraer.SUBSTRING(a.LastTitrate, PATINDEX('%[0-9.,]%', a.LastTitrate), ...
extrae la subcadena entre el primer dígito, punto o coma y el primer carácter que no sea un dígito, un punto o una coma después de él.CAST(... as DECIMAL(10, 3))
convierte la subcadena extraída en un número decimal con una precisión de 10 y una escala de 3.El resultado es una nueva columna llamada ExtractedNumber que contiene los números extraídos con decimales.