sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2005:dela upp strängen i array och hämta array(x)?

Jag antar här att det alltid finns exakt 4 delar.

Om så är fallet kan du ersätta / med . och använd den snygga inbyggda ParseName fungera. Det enda problemet från ditt exempel är att det räknas från slutet, så du måste vara försiktig med vilken del du vill ha:

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

Om det finns ett varierande antal delar, måste du hitta en strängdelningsfunktion för att göra detta åt dig, det finns inte en bra inbyggd. Många alternativ kan hittas genom att söka SO:https://stackoverflow.com/search?q=[sql+server]+string+split

Varning - om du försöker använda ett nummer med PARSENAME annat än 1-4 kommer resultatet alltid att vara NULL.



  1. postgres kolumn X finns inte

  2. Hur man formaterar siffror i Oracle

  3. Något sätt att *inte* använda förberedda uttalanden på serversidan i Postgresql?

  4. Fullständig MariaDB-kryptering i vila och under transport för maximalt dataskydd - del två