sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2005:rozdělit řetězec do pole a získat pole (x)?

Zde vycházím z toho, že jsou vždy přesně 4 části.

Pokud ano, můžete nahradit / s . a použijte pěkné vestavěné ParseName funkce. Jediný problém z vašeho příkladu je, že se počítá od konce, takže byste si měli dávat pozor na to, kterou část chcete:

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

Pokud existuje proměnný počet částí, budete muset najít funkci pro dělení řetězců, která to udělá za vás, není tam zabudovaná žádná dobrá. Mnoho možností lze najít hledáním SO:https://stackoverflow.com/search?q=[sql+server]+string+split

Varování – pokud se pokusíte použít číslo s PARSENAME jiný než 1-4, výsledek bude vždy NULL.



  1. Porovnání datových úložišť pro PostgreSQL - MVCC vs InnoDB

  2. Dokáže Laravel zvládnout aplikace s vysokou návštěvností?

  3. Editační sloupec TableView JAVA FX

  4. ORA-06550:Chyba chybného počtu nebo typu argumentů při volání funkce uvnitř balíčku Oracle v ASP.NET