Hur delar jag en sträng med en avgränsad siffra i SQL Server?



Prova Vårt Instrument För Att Eliminera Problem

I den här artikeln kommer vi att diskutera flera sätt att dela upp det avgränsade strängvärdet. Det kan uppnås med flera metoder inklusive.



  • Användning av STRING_SPLIT-funktionen för att dela strängen
  • Skapa en användardefinierad tabellvärderad funktion för att dela strängen,
  • Använd XQuery för att dela upp strängvärdet och omvandla en avgränsad sträng till XML

Först och främst måste vi skapa en tabell och infoga data i den som kommer att användas i alla tre metoderna. Tabellen ska innehålla en rad med fält-id och sträng med avgränsningstecken. Skapa en tabell med namnet 'student' med hjälp av följande kod.



SKAPA TABELLstudent (ID INT IDENTITET (1, 1), studentnamn VARCHAR (MAX))

Infoga studentnamn åtskilda av komma i en rad genom att köra följande kod.



INSÄTTA I student (studentnamn) VÄRDEN ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Tabellskapande och datainsättning

Kontrollera om data har infogats i tabellen eller inte använder följande kod.

välj * från studenten

Kontrollera om data har infogats i 'student' -tabellen



Metod 1: Använd STRING_SPLIT-funktionen för att dela upp strängen

I SQL Server 2016, “STRING_SPLIT” funktionen introducerades som kan användas med kompatibilitetsnivå 130 och högre. Om du använder 2016 SQL Server-versionen eller senare kan du använda den här inbyggnadsfunktionen.

dessutom “STRING_SPLIT” matar in en sträng som har avgränsat understrängar och inmatat ett tecken som ska användas som avgränsare eller separator. Funktionen matar ut en enkolonnstabell vars rader innehåller understrängarna. Namnet på utgångskolumnen är “ Värde' . Denna funktion får två parametrar. Den första parametern är en sträng och den andra är avgränsningstecken eller separator baserat på vilken vi måste dela upp strängen. Utgången innehåller en enkolonnstabell där understrängar finns. Denna utgångskolumn heter 'Värde' som vi kan se i figuren nedan. Dessutom har “STRING SPLIT” table_valued-funktionen returnerar en tom tabell om inmatningssträngen är NULL.

Databasens kompatibilitetsnivå:

Varjedatabasäranslutenmedtillkompatibilitetnivå.Detmöjliggördedatabasbeteendetillvarakompatibelmed THärsärskildSQLServerversionDetkörpå.

Nu kommer vi att kalla funktionen 'string_split' för att dela strängen avgränsad med komma. Men kompatibilitetsnivån var mindre än 130, varefter följande fel höjdes. 'Ogiltigt objektnamn' SPLIT_STRING ''

Fel uppstår om databasens kompatibilitetsnivå är lägre än 130 'Ogiltigt objektnamn split_string'

Därför måste vi ställa in databaskompatibilitetsnivån till 130 eller högre. Så vi följer dessa steg för att ställa in kompatibilitetsnivån för databasen.

  • Först och främst ställ in databasen till “single_user_access_mode” med hjälp av följande kod.
ALTER DATABAS SET SINGLE_USER
  • För det andra, ändra kompatibilitetsnivån för databasen med hjälp av följande kod.
ALTER DATABAS SET COMPATIBILITY_LEVEL = 130
  • Sätt tillbaka databasen till åtkomstläge för flera användare genom att använda följande kod.
ALTER DATABAS SET MULTI_USER
ANVÄNDA [master] GO ALTER DATABAS [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centralality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABAS [bridge_centralality] SET MULTI_USER GO

Utgången blir:

Ändra kompatibilitetsnivå till 130

Kör nu den här koden för att få önskat resultat.

FÖRKLARA @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' VÄLJ * FRÅN STRING_SPLIT (@string_value,