Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2005:divida a string em array e obtenha array(x)?


Estou assumindo aqui que sempre há exatamente 4 partes.

Nesse caso, você pode substituir / com . e use o ParseName função. O único problema do seu exemplo é que ele conta a partir do final, então você precisa ter cuidado com a parte que deseja:
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 houver um número variável de partes, você precisará encontrar uma função de divisão de strings para fazer isso por você, não há uma boa embutida. Muitas opções podem ser encontradas pesquisando SO:https://stackoverflow.com/search?q=[sql+server]+string+split

Aviso - se você tentar usar um número com PARSENAME diferente de 1-4, o resultado será sempre NULL.