Tartalomjegyzék:
- Az adatbázis kompatibilitási szintje:
- Először állítsa az adatbázist „single_user_access_mode” értékre a következő kód használatával
- Másodszor módosítsa az adatbázis kompatibilitási szintjét a következő kód használatával
- Helyezze vissza az adatbázist többfelhasználós hozzáférési módba a következő kód használatával
- 2. módszer: A karakterlánc felosztásához hozzon létre egy felhasználó által definiált táblázatértékű függvényt
- 3. módszer: Az XQuery segítségével ossza fel a karakterlánc értékét, és alakítsa át a körülhatárolt karakterláncot XML-be
Videó: Hogyan Lehet Szétválasztani Egy Karakterláncot Egy Elválasztott Karakterrel Az SQL Serverben?
2024 Szerző: Kayla Nelson | [email protected]. Utoljára módosítva: 2024-01-11 14:26
Ebben a cikkben több módszert is megvitatunk az elválasztott karakterlánc felosztásával. Többféle módszerrel érhető el, beleértve.
- A STRING_SPLIT függvény használata a karakterlánc felosztásához
- Hozzon létre egy felhasználó által definiált táblázatértékű függvényt a karakterlánc felosztásához,
- Az XQuery segítségével ossza fel a karakterlánc értékét, és az elválasztott karakterláncot alakítsa át XML-be
Először is létre kell hoznunk egy táblázatot, és be kell illesztenünk a datát, amelyet mindhárom módszerben használni fogunk. A táblázatnak egyetlen sort kell tartalmaznia, mezőazonosítóval és karakterlánccal, benne határoló karakterekkel. Hozzon létre „diák” nevű táblázatot a következő kód használatával.
TÁBLÁZAT LÉTREHOZÁSA (Azonosító azonosítója (1, 1), tanuló_neve VARCHAR (MAX))
Helyezze vesszővel elválasztott diákneveket egy sorba a következő kód végrehajtásával.
INSERT INTO hallgató (hallgató_neve) ÉRTÉKEI ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')
Ellenőrizze, hogy a dathákat beillesztették-e a táblázatba, vagy nem használja a következő kódot.
válassza a * -t a hallgatótól
1. módszer: Használja a STRING_SPLIT függvényt a karakterlánc felosztásához
Az SQL Server 2016 alkalmazásban „STRING_SPLIT” funkciót vezettek be, amely a 130-as és magasabb szintű kompatibilitási szintekkel használható. Ha a 2016-os SQL Server vagy újabb verziót használja, használhatja ezt a beépített funkciót.
Továbbá „STRING_SPLIT” bemeneti karaktersorozatot, amely elhatárolta az alhúrokat, és egy karaktert ad meg, amelyet elválasztóként vagy elválasztóként használhat. A függvény egy oszlopos táblázatot ad ki, amelynek sorai tartalmazzák az alhúrokat. A kimeneti oszlop neve: Érték". Ez a függvény két paramétert kap. Az első paraméter a string, a második pedig egy elválasztó karakter vagy elválasztó, amely alapján fel kell osztanunk a stringet. A kimenet egy oszlopos táblázatot tartalmaz, amelyben alszövegek találhatók. Ennek a kimeneti oszlopnak a neve "Érték" amint az alábbi ábrán láthatjuk. Sőt, a „STRING SPLIT” A table_valued függvény üres táblát ad vissza, ha a bemeneti karakterlánc NULL.
Az adatbázis kompatibilitási szintje:
Minden adatbázis össze van kapcsolva a kompatibilitási szinttel. Lehetővé teszi, hogy az adatbázis viselkedése kompatibilis legyen az adott SQL Server verzióval, amelyen fut.
Most a „string_split” függvényt hívjuk meg a vesszőkkel elválasztott karakterlánc felosztásához. De a kompatibilitási szint kevesebb volt, mint 130, ezért a hibát felvetették. „Érvénytelen„ SPLIT_STRING”objektumnév”
Ezért az adatbázis-kompatibilitási szintet 130-ra vagy magasabbra kell állítanunk. Tehát ezeket a lépéseket követve állítjuk be az adatbázis kompatibilitási szintjét.
Először állítsa az adatbázist „single_user_access_mode” értékre a következő kód használatával
ALTER DATABASE SET SINGLE_USER
Másodszor módosítsa az adatbázis kompatibilitási szintjét a következő kód használatával
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
Helyezze vissza az adatbázist többfelhasználós hozzáférési módba a következő kód használatával
ALTER DATABASE SET MULTI_USER
HASZNÁLJA [master] GO ALTER ADATBÁZIS [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO
A kimenet a következő lesz:
Most futtassa ezt a kódot a kívánt eredmény eléréséhez.
DECLARE @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value, ',')
A lekérdezés kimenete a következő lesz:
2. módszer: A karakterlánc felosztásához hozzon létre egy felhasználó által definiált táblázatértékű függvényt
Természetesen ezt a hagyományos módszert az SQL Server minden verziója támogatja. Ebben a technikában létrehozunk egy felhasználó által definiált függvényt, amely a karakterláncot elválasztott karakterekkel osztja fel a SUBSTRING”Funkció, CHARINDEX ”És közben hurok. Ez a függvény használható a dat hozzáadására a kimeneti táblához, mivel a visszatérési típusa „table”.
CREATE FUNCTION [dbo]. [Split_string] (@ string_value NVARCHAR (MAX), @delimiter_character CHAR (1)) RETURNS @result_set TABLE (splited_datNVARCHAR (MAX)) BEGIN DECLARE @start_position INT = @start_pozíció INT end_position = CHARINDEX (@delimiter_character, @string_value) Mialatt @start_position <LEN (@string_value) + 1 KEZDÉS, HA @ending_position = 0 SET @ending_position = LEN (@string_value) + 1 INSERT INTO @result_set (splited_data) string_value, @start_position, @ending_position - @start_position)) SET @start_position = @ending_position + 1 SET @ending_position = CHARINDEX (@delimiter_character, @string_value, @start_position) END RETURN END
Most hajtsa végre az alábbi parancsfájlt, hogy meghívja a split funkciót a karakterlánc elválasztó karakterrel történő felosztásához.
DECLARE @student_name VARCHAR (MAX); DECLARE @delimiter CHAR (1); SET @ delimiter = ',' SET @student_name = (SELECT student_name FROM student) SELECT * FROM dbo.split_string (@student_name, @delimiter)
Az eredménykészlet ilyen lesz.
3. módszer: Az XQuery segítségével ossza fel a karakterlánc értékét, és alakítsa át a körülhatárolt karakterláncot XML-be
Mivel a felhasználó által definiált függvények kimerítő erőforrások, ezért ezeket a funkciókat kerülnünk kell. Egy másik lehetőség a beépített „string_split” függvény, de ez a funkció használható olyan adatbázisokhoz, amelyek kompatibilitási szintje 130 vagy magasabb. Tehát itt jön egy másik megoldás ennek a nehéz feladatnak a megoldására. a karakterlánc a következő segítségével bontható fel XML.
DECLARE @xml_value AS XML, @string_value AS VARCHAR (2000), @delimiter_value AS VARCHAR (15) SET @ string_value = (SELECT student_name FROM student) SET @delimiter_value = ',' SET @xml_value = Cast (('' + Replace (@string_value, @delimiter_value, '') + '') AS XML) SELECT @xml_value
A lekérdezés kimenete a következő lesz:
Ha meg akarja tekinteni a teljes XML fájlt. Kattints a linkre. Ha rákattint a linkkódra, ez így fog kinézni.
Most az XML karakterláncot tovább kell dolgozni. Végül az „x-Query” kifejezéssel fogunk lekérdezni az XML-ből.
DECLARE @xml_value AS XML, @string_value AS VARCHAR (2000), @delimiter_value AS VARCHAR (15) SET @ string_value = (SELECT student_name FROM student) SET @delimiter_value = ',' SET @xml_value = Cast (('' + Replace (@string_value, @delimiter_value, '') + '') AS XML) SELECT xmquery ('.'). value ('.', 'VARCHAR (15)') AS VALUE FROM @ xml_value.nodes ('/ studentname')) AS x (m)
A kimenet a következő lesz:
Ajánlott:
Hogyan Lehet Kijavítani Az „IO Hibát: A Hálózati Adapter Nem Tudta Létrehozni A Kapcsolatot” Az Oracle SQL Rendszeren?
Az Oracle SQL egy integrált fejlesztői környezet, amelyet az Oracle adatbázisok SQL-sel történő használatához hoztunk létre. Ezt a terméket fejlesztette és biztosította
Hogyan Használható A DROP IF EXISTS Az SQL Serverben?
Ez a cikk az SQL Server 2016 és újabb verzióiban elérhető "DROP IF EXISTS" utasítást tárgyalja. Az "IF EXITS" a legfrissebb opcionális záradék, amely a következő szövegbe került:
Hogyan Lehet Megnyitni Egy ESports Kávézót? Egy Szakértő Tippjei
Lehet, hogy van némi pénze, vagy Ön és a haverjai társulhatnak eSport kávézó megnyitásához, de nem ismeri a folyamatot. Nem kell aggódnia, mivel egy szakértő megfelelő eljárásokat és tippeket ad Önnek ugyanezzel kapcsolatban
Keresse Meg és Cserélje Le A Karakterláncot / Karaktert / Szimbólumot Egy új Sorral A Notepad ++ Alkalmazásban
A Notepad ++ egy forráskód és szövegszerkesztő, amelyet a programozók többnyire a kódok egyszerű környezetben történő szerkesztésére használnak. Ez a
Hogyan Lehet átnevezni Az SQL Server Adatbázist?
Néha meg kell változtatnunk az adatbázis nevét, mert az eredeti név a projekten alapult, amely lényegtelenné vált az adatbázisban tárolt adatok szempontjából