Kaip padalinti eilutę pagal SQL serverio atribotą simbolį?



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Šiame straipsnyje aptarsime keletą būdų, kaip padalyti atribotą eilutės reikšmę. Tai galima pasiekti naudojant kelis metodus, įskaitant.



  • Norėdami padalyti eilutę, naudokite funkciją STRING_SPLIT
  • Sukurkite vartotojo apibrėžtą lentelės vertę funkciją, kad padalytumėte eilutę,
  • Naudokite „XQuery“, norėdami padalyti eilutės vertę ir transformuoti atribotas eilutes į XML

Visų pirma turime sukurti lentelę ir į ją įterpti duomenis, kurie bus naudojami visais trim metodais. Lentelėje turėtų būti viena eilutė su lauko ID ir eilute, kurioje būtų skiriamieji ženklai. Sukurkite lentelę pavadinimu „studentas“ naudodami šį kodą.



SUKURTI STALĄ mokinys (ID TAPATYBĖ (1, 1), studento vardas VARCHAR (MAX))

Į vieną eilutę įterpkite studentų vardus, atskirtus kableliais, vykdydami šį kodą.



ĮRAŠYTI studento (studento_vardas) VERTYBES ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Lentelės kūrimas ir duomenų įterpimas

Patikrinkite, ar duomenys buvo įtraukti į lentelę, ar nenaudojate šio kodo.

pasirinkite * iš studento

Patikrinkite, ar duomenys buvo įtraukti į „studento“ lentelę



1 metodas: Norėdami padalyti eilutę, naudokite funkciją STRING_SPLIT

„SQL Server 2016“, „STRING_SPLIT“ buvo įdiegta funkcija, kurią galima naudoti su suderinamumo lygiu 130 ir aukštesniais. Jei naudojate 2016 m. Ar naujesnę „SQL Server“ versiją, galite naudoti šią integruotą funkciją.

Be to „STRING_SPLIT“ įveda eilutę, kurioje yra atskirtos sub eilutės, ir įveda vieną simbolį, kurį reikia naudoti kaip skiriklį ar skiriklį. Funkcija išleidžia vieno stulpelio lentelę, kurios eilutėse yra po eilutės. Išvesties stulpelio pavadinimas yra „ Vertė “ . Ši funkcija gauna du parametrus. Pirmasis parametras yra eilutė, o antrasis yra skiriamasis simbolis arba atskyriklis, pagal kurį mes turime padalyti eilutę. Išvestyje yra vieno stulpelio lentelė, kurioje yra pakraščiai. Šis išvesties stulpelis pavadintas „Vertė“ kaip matome paveikslėlyje žemiau. Be to, „STRING SPLIT“ Funkcija table_valued grąžina tuščią lentelę, jei įvesties eilutė yra NULL.

Duomenų bazės suderinamumo lygis:

Kiekvienasduomenų bazėyraprijungtassuįsuderinamumaslygiu.Taiįgalinaduomenų bazėselgesysįbūtisuderinamassu tūkstyraypačSQLServerisversijataibėgaant.

Dabar, norėdami padalyti eilutes, kurias skiria kableliai, iškviesime funkciją „string_split“. Bet suderinamumo lygis buvo mažesnis nei 130, todėl buvo padaryta klaida. „Netinkamas objekto pavadinimas„ SPLIT_STRING ““

Klaida įvyksta, jei duomenų bazės suderinamumo lygis yra žemesnis nei 130 „Neteisingas objekto pavadinimas split_string“

Taigi turime nustatyti duomenų bazės suderinamumo lygį iki 130 arba daugiau. Taigi atlikdami šiuos veiksmus nustatysime duomenų bazės suderinamumo lygį.

  • Pirmiausia nustatykite duomenų bazę „single_user_access_mode“ naudodami šį kodą.
KEISTI DUOMENŲ BAZĖS NUSTATYTI SINGLE_USER
  • Antra, pakeiskite duomenų bazės suderinamumo lygį naudodami šį kodą.
KEITIMO DUOMENŲ BAZĖS SUDERINAMUMAS_LEVEL = 130
  • Perkelkite duomenų bazę į kelių vartotojų prieigos režimą naudodami šį kodą.
PAKEISTI DUOMENŲ BAZĖS NUSTATYTI MULTI_USER
NAUDOTI [master] GO ALTER DATABASE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO

Rezultatas bus:

Pakeiskite suderinamumo lygį į 130

Dabar paleiskite šį kodą, kad gautumėte reikiamą rezultatą.

PAREIŠKKITE @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' PASIRINKTI * IŠ STRING_SPLIT (@ string_value,