Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server 2005:dividere la stringa in array e ottenere array(x)?

Presumo qui che ci siano sempre esattamente 4 parti.

In tal caso, potresti sostituire / con . e usa il simpatico integrato ParseName funzione. L'unico problema del tuo esempio è che conta dalla fine, quindi dovresti stare attento a quale parte vuoi:

DECLARE @test VARCHAR(max);
SET @test = 'Peter/Parker/Spiderman/Marvel';
SET @test = Replace(@test, '/', '.');

SELECT Parsename(@test, 4),--returns Peter
       Parsename(@test, 3),--returns Parker
       Parsename(@test, 2),--returns Spiderman
       Parsename(@test, 1) --returns Marvel

Se c'è un numero variabile di parti, dovrai trovare una funzione di divisione delle stringhe per farlo per te, non ce n'è una buona incorporata. Molte opzioni possono essere trovate cercando SO:https://stackoverflow.com/search?q=[sql+server]+string+split

Avvertimento:se provi a utilizzare un numero con PARSENAME diverso da 1-4, il risultato sarà sempre NULL.