Kuidas jagada stringi eraldatud tähemärgiga SQL serveris?



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Selles artiklis käsitleme mitut viisi eraldatud stringi väärtuse jagamiseks. Seda saab saavutada mitme meetodi abil, sealhulgas.



  • Funktsiooni STRING_SPLIT kasutamine stringi jagamiseks
  • Stringi jagamiseks looge kasutaja määratud tabeli väärtusega funktsioon,
  • Stringi väärtuse jagamiseks ja eraldatud stringi XML-i teisendamiseks kasutage XQuery

Kõigepealt peame looma tabeli ja lisama sinna andmed, mida kasutatakse kõigi kolme meetodi puhul. Tabel peaks sisaldama ühte rida koos välja ID ja stringiga eraldusmärkidega. Looge järgmise koodi abil tabel nimega “õpilane”.



LOE TABEL õpilane (ID ID IDENTITEET (1, 1), õpilase_nimi VARCHAR (MAX))

Lisage õpilastele komadega eraldatud nimed ühte ritta, käivitades järgmise koodi.



INSERT INTO student (student_name) VALUES ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Tabeli loomine ja andmete sisestamine

Kontrollige, kas andmed on tabelisse sisestatud või mitte järgmist koodi kasutades.

vali õpilasest *

Kontrollige, kas andmed on tabelisse 'õpilane' sisestatud



1. meetod: stringi jagamiseks kasutage funktsiooni STRING_SPLIT

SQL Server 2016-s „STRING_SPLIT” kasutusele funktsioon, mida saab kasutada ühilduvustasemega 130 ja uuem. Kui kasutate 2016. aasta SQL Serveri versiooni või uuemat, saate seda sisseehitatud funktsiooni kasutada.

Lisaks „STRING_SPLIT” sisestab stringi, mis on piiritlenud alamstringid, ja sisendab ühe märgi, mida kasutada eraldajana või eraldajana. Funktsioon väljastab ühe veeruga tabeli, mille ridadel on alamstringid. Väljundveeru nimi on “ Väärtus ” . See funktsioon saab kaks parameetrit. Esimene parameeter on string ja teine ​​on eraldusmärk või eraldaja, mille põhjal peame stringi jagama. Väljund sisaldab ühe veeruga tabelit, milles on alamstringid. Selle väljundveeru nimi on „Väärtus“ nagu näeme alloleval joonisel. Veelgi enam, „STRING SPLIT“ Funktsioon table_valued tagastab tühja tabeli, kui sisendstring on NULL.

Andmebaasi ühilduvuse tase:

Igaandmebaasionühendatudkooskuniühilduvustasemel.Seevõimaldabandmebaasikäituminekuniolemaühilduvadkoos thoneritiSQLServerversioonsedajooksebpeal.

Nüüd kutsume komadega eraldatud stringi jagamiseks funktsiooni string_split. Kuid ühilduvuse tase oli alla 130, seega tõstatati järgmine viga. „Kehtetu objekti nimi„ SPLIT_STRING “

Viga ilmneb, kui andmebaasi ühilduvuse tase on madalam kui 130 „Kehtetu objekti nimi split_string”

Seega peame seadma andmebaasi ühilduvuse tasemele 130 või kõrgema. Nii et järgime neid samme andmebaasi ühilduvustaseme määramiseks.

  • Kõigepealt määrake andmebaasile „single_user_access_mode“, kasutades järgmist koodi.
ALTER ANDMEBAASE SET SINGLE_USER
  • Teiseks muutke andmebaasi ühilduvuse taset järgmise koodi abil.
TEISE ANDMEBAASI MÄÄRAMINE KOKKUSOBIVUS_TASE = 130
  • Pange andmebaas uuesti mitme kasutaja juurdepääsurežiimi, kasutades järgmist koodi.
ALTER ANDMEBAASE SET MULTI_USER
KASUTA [master] GO ALTER DASABASE [bridge_centrality] SET SINGLE_USER ALTER DABABE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DABABE [bridge_centrality] SET MULTI_USER GO

Väljundiks on:

Muutke ühilduvuse tase 130-le

Nõutava tulemuse saamiseks käivitage see kood nüüd.

DEKLAREERI @ string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' VALI * FROM STRING_SPLIT (@ string_value,