Hvordan dele en streng med et avgrenset tegn i SQL Server?



Prøv Instrumentet Vårt For Å Eliminere Problemer

I denne artikkelen vil vi diskutere flere måter å dele den avgrensede strengverdien på. Det kan oppnås ved å bruke flere metoder, inkludert.



  • Bruk av STRING_SPLIT-funksjonen til å dele strengen
  • Opprett en brukerdefinert tabellverdi-funksjon for å dele strengen,
  • Bruk XQuery til å dele strengverdien og transformere en avgrenset streng til XML

Først og fremst må vi lage en tabell og sette inn data i den som skal brukes i alle tre metodene. Tabellen skal inneholde en enkelt rad med felt-ID og streng med skilletegn. Lag en tabell med navnet 'student' ved hjelp av følgende kode.



OPPRETT TABELL student (ID INT IDENTITET (1, 1), studentnavn VARCHAR (MAX))

Sett inn studentnavn adskilt med komma i en enkelt rad ved å utføre følgende kode.



INSERT IN student (studentnavn) VERDIER ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Tabelloppretting og innsetting av data

Kontroller om data er satt inn i tabellen eller ikke bruker følgende kode.

velg * fra studenten

Bekreft om data er satt inn i 'student' -tabellen



Metode 1: Bruk STRING_SPLIT-funksjonen til å dele strengen

I SQL Server 2016, “STRING_SPLIT” funksjon ble introdusert som kan brukes med kompatibilitetsnivå 130 og oppover. Hvis du bruker 2016 SQL Server-versjonen eller nyere, kan du bruke denne innebygde funksjonen.

Dessuten “STRING_SPLIT” legger inn en streng som har avgrenset understrenger og skriver inn ett tegn som skal brukes som skilletegn eller skilletegn. Funksjonen sender ut en enkeltkolonnetabell hvis rader inneholder understrengene. Navnet på utdatakolonnen er “ Verdi' . Denne funksjonen får to parametere. Den første parameteren er en streng, og den andre er skilletegn eller skilletegn som vi må dele strengen på. Utgangen inneholder en enkeltkolonnetabell der understrengene er til stede. Denne utgangskolonnen heter 'Verdi' som vi kan se i figuren nedenfor. Videre er “STRING SPLIT” table_valued-funksjonen returnerer en tom tabell hvis inngangsstrengen er NULL.

Databasens kompatibilitetsnivå:

Hverdatabaseertilkobletmedtilkompatibilitetnivå.Denmuliggjørdedatabaseoppførseltilværekompatibelmed therbestemtSQLServerversjondenkjørerpå.

Nå vil vi kalle “string_split” -funksjonen for å dele streng avgrenset av komma. Men kompatibilitetsnivået var mindre enn 130, og følgende feil ble hevet. “Ugyldig objektnavn‘ SPLIT_STRING ’”

Feil oppstår hvis kompatibilitetsnivået til databasen er lavere enn 130 “Ugyldig objektnavn split_string”

Derfor må vi sette databasekompatibilitetsnivået til 130 eller høyere. Så vi vil følge dette trinnet for å stille inn kompatibilitetsnivået til databasen.

  • Sett først databasen til “single_user_access_mode” ved å bruke følgende kode.
ALTER DATABASE SET SINGLE_USER
  • For det andre, endre kompatibilitetsnivået til databasen ved å bruke følgende kode.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Sett databasen tilbake til tilgang for flerbruker ved å bruke følgende kode.
ALTER DATABASE SET MULTI_USER
BRUK [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

Resultatet blir:

Endre kompatibilitetsnivå til 130

Kjør nå denne koden for å få det nødvendige resultatet.

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