"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo dividir las cadenas de forma segura en T-SQL usando delimitadores?

¿Cómo dividir las cadenas de forma segura en T-SQL usando delimitadores?

Publicado el 2025-03-24
Navegar:274

How to Safely Split Strings in T-SQL Using Delimiters?

cadena de segmento basada en delimitador en t-sql

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.

Último tutorial Más>

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