Sådan opdeles en streng med en afgrænset tegn i SQL Server?



Prøv Vores Instrument Til At Fjerne Problemer

I denne artikel vil vi diskutere flere måder at opdele den afgrænsede strengværdi på. Det kan opnås ved hjælp af flere metoder, herunder.



  • Brug af STRING_SPLIT-funktionen til at opdele strengen
  • Opret en brugerdefineret tabelværdifunktion for at opdele strengen,
  • Brug XQuery til at opdele strengværdien og omdanne en afgrænset streng til XML

Først og fremmest skal vi oprette en tabel og indsætte data i den, som skal bruges i alle tre metoder. Tabellen skal indeholde en enkelt række med felt-id og streng med afgrænsningstegn i. Opret en tabel med navnet 'student' ved hjælp af følgende kode.



OPRET TABELstuderende (ID INT IDENTITET (1, 1), studentnavn VARCHAR (MAX))

Indsæt elevnavne adskilt med kommaer i en enkelt række ved at udføre følgende kode.



INDSÆT I studerende (studentnavn) VÆRDIER ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Oprettelse af tabel og dataindsættelse

Kontroller, om data er indsat i tabellen eller ikke bruger følgende kode.

vælg * fra studerende

Kontroller, om data er indsat i tabellen 'student'



Metode 1: Brug STRING_SPLIT-funktionen til at opdele strengen

I SQL Server 2016, “STRING_SPLIT” funktion blev introduceret, som kan bruges med kompatibilitetsniveau 130 og derover. Hvis du bruger versionen af ​​SQL Server 2016 eller nyere, kan du bruge denne indbyggingsfunktion.

desuden “STRING_SPLIT” indtaster en streng, der har afgrænset understrenge og indtaster et tegn, der skal bruges som afgrænser eller separator. Funktionen udsender en enkeltkolonnetabel, hvis rækker indeholder understrengene. Navnet på outputkolonnen er “ Værdi' . Denne funktion får to parametre. Den første parameter er en streng, og den anden er afgrænsningstegn eller separator, som vi skal dele strengen på. Outputtet indeholder en enkeltkolonnetabel, hvor understrenge er til stede. Denne outputkolonne er navngivet 'Værdi' som vi kan se i nedenstående figur. Desuden er “STRING SPLIT” tabel_værdifunktion returnerer en tom tabel, hvis inputstrengen er NULL.

Databasens kompatibilitetsniveau:

Hverdatabaseertilsluttetmedtilkompatibilitetniveau.Detmuliggørdetdatabaseopførseltilværekompatibelmed thersærligSQLServerversiondetkørerpå.

Nu kalder vi “string_split” -funktionen for at dele streng afgrænset med kommaer. Men kompatibilitetsniveauet var mindre end 130, hvorfor følgende fejl blev hævet. “Ugyldigt objektnavn‘ SPLIT_STRING '”

Fejl opstår, hvis databasens kompatibilitetsniveau er lavere end 130 'Ugyldigt objektnavn split_string'

Derfor er vi nødt til at indstille databaskompatibilitetsniveauet til 130 eller højere. Så vi følger dette trin for at indstille databasens kompatibilitetsniveau.

  • Indstil først databasen til “single_user_access_mode” ved hjælp af følgende kode.
ALTER DATABASE SET SINGLE_USER
  • For det andet skal du ændre databasens kompatibilitetsniveau ved hjælp af følgende kode.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Sæt databasen tilbage til flerbrugeradgangstilstand ved hjælp af følgende kode.
ALTER DATABASE SET MULTI_USER
BRUG [master] GO ALTER DATABASE [bridge_centralality] SET SINGLE_USER ALTER DATABASE [bridge_centralality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centralality] SET MULTI_USER GO

Outputtet vil være:

Skift kompatibilitetsniveau til 130

Kør nu denne kode for at få det krævede resultat.

ERKLÆR @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' VÆLG * FRA STRING_SPLIT (@string_value,