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

¿Cómo divido una cadena para poder acceder al elemento x?

No creo que SQL Server tenga una función de división integrada, por lo que aparte de un UDF, la única otra respuesta que conozco es secuestrar la función PARSENAME:

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2) 

PARSENAME toma una cadena y la divide en el carácter de punto. Toma un número como su segundo argumento, y ese número especifica qué segmento de la cadena devolver (trabajando de atrás hacia adelante).

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3)  --return Hello

El problema obvio es cuando la cadena ya contiene un punto. Sigo pensando que usar un UDF es la mejor manera... ¿Alguna otra sugerencia?