sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo dividir una cadena en SQL Server

Problema:

Quiere dividir una cadena en SQL Server.

Ejemplo 1:

Tiene una oración y le gustaría dividirla por el carácter de espacio.

Solución 1:

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

El resultado se ve así:

valor
Un
ejemplo
frase.

Discusión:

La función STRING_SPLIT(cadena, separador) en SQL Server divide la cadena en el primer argumento por el separador en el segundo argumento. Para dividir una oración en palabras, especifique la oración como el primer argumento de STRING_SPLIT() función y ' ' como segundo argumento.

STRING_SPLIT() da como resultado una columna denominada valor. Para obtener cada parte de la cadena en una fila separada, seleccione el valor de STRING_SPLIT(string, separator) . Por ejemplo,

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Por supuesto, puede dividir una cadena usando algún otro separador, por ejemplo, la coma. También puede cambiar el nombre de la columna como cualquier otra columna.

Ejemplo 2:

En los texts mesa, hay algunas frases.

frase
Esta es la primera oración.
Y aquí está el otro.

Desea dividir las oraciones por el carácter de espacio.

Solución 2:

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

El resultado se ve así:

valor
Esto
es
el
primero
frase.
Y
aquí está
el
otro
uno.

Discusión:

Al igual que en el ejemplo anterior, la función STRING_SPLIT(texto, separador) divide la cadena dada como primer argumento por el separador. Esta vez, tienes algunas oraciones de las que ocuparte; estas oraciones se almacenan en los texts mesa. Es por eso que necesita usar APLICACIÓN CRUZADA; más específicamente,

texts CROSS APPLY STRING_SPLIT(sentence, ' ')

Úselo en el FROM cláusula. Significa que el lado derecho (STRING_SPLIT(sentence, ' ') ) se aplica a cada fila de la tabla del lado izquierdo (texts ). Es por eso que el lado derecho puede usar las columnas de la tabla del lado izquierdo (aquí, la columna de oración de los texts tabla.) Esta es la consulta que obtienes.

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Ejemplo 3:

En los texts tabla, hay dos columnas:id y sentence .

id frase
1 Esta es la primera oración.
2 Y aquí está el otro.

Desea dividir las oraciones por el carácter de espacio y también mostrar los ID de las oraciones.

Solución 3:

SELECT
  id,
  value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

El resultado se ve así:

id valor
1 Esto
1 es
1 el
1 primero
1 frase.
2 Y
2 aquí está
2 el
2 otro
2 uno.

Discusión:

Este ejemplo es muy similar, pero también desea ver el id columna. Para ver esta columna, simplemente agréguela a SELECT lista y recuerda incluir la coma. Verá el ID de la oración junto con las partes de las oraciones en el resultado. Por ejemplo, la primera frase se divide en 5 partes y tiene el ID 1 . Por lo tanto, el ID de las 5 partes en la tabla de resultados será 1 . La siguiente frase, con el ID 2 , también se divide en 5 partes, y cada una de estas partes se mostrará con id = 2 .