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
.