pregunta:
en SQL, el uso de cadenas de subcadena para dividir las cadenas basadas en delimitadores puede causar errores cuando el delimitador no existe. El siguiente código demuestra esto:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) 1, 1000) AS LastName
FROM MyTable
Cuando se encuentra una línea sin delimitador, lanza un error: "El parámetro de longitud pasado a la izquierda o la función de subcadena no es válida".
Solución:
Para resolver este problema, puede usar la instrucción de caso en la función de subcadena como se muestra a continuación:
SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
WHEN 0
THEN LEN(myColumn)
ELSE CHARINDEX('/', myColumn) - 1
END) AS FirstName
,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
WHEN 0
THEN LEN(myColumn) 1
ELSE CHARINDEX('/', myColumn) 1
END, 1000) AS LastName
FROM MyTable
Este código actualizado usa Charindex para evaluar la posición del delimitador. Si no se encuentra el delimitador (Charindex Retrase 0), la instrucción de caso usa la longitud de la cadena para garantizar que la cadena completa se trate como un nombre. Si existe un delimitador, calcula la posición del primer carácter después del delimitador como índice inicial del apellido. Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3