Obsah:
- Úroveň kompatibility databázy:
- Najskôr nastavte databázu na „single_user_access_mode“pomocou nasledujúceho kódu
- Po druhé, zmeňte úroveň kompatibility databázy pomocou nasledujúceho kódu
- Vráťte databázu späť do režimu prístupu viacerých používateľov pomocou nasledujúceho kódu
- Metóda 2: Ak chcete reťazec rozdeliť, vytvorte používateľom definovanú funkciu s hodnotou tabuľky
- Metóda 3: Pomocou nástroja XQuery rozdeľte hodnotu reťazca a transformujte reťazec s oddeľovačmi do formátu XML
Video: Ako Rozdeliť Reťazec Ohradený Znakom Na Serveri SQL Server?
2024 Autor: Kayla Nelson | [email protected]. Naposledy zmenené: 2024-01-11 14:28
V tomto článku si ukážeme niekoľko spôsobov, ako rozdeliť hodnotu vymedzeného reťazca. To je možné dosiahnuť pomocou viacerých metód vrátane.
- Použitie funkcie STRING_SPLIT na rozdelenie reťazca
- Vytvorte používateľom definovanú funkciu s hodnotou tabuľky na rozdelenie reťazca,
- Pomocou nástroja XQuery rozdeľte hodnotu reťazca a transformujte reťazec s oddeľovačmi do formátu XML
Najskôr musíme vytvoriť tabuľku a vložiť do nej údaj, ktorý bude použitý vo všetkých troch metódach. Tabuľka by mala obsahovať jeden riadok s ID poľa a reťazec so znakmi oddeľovača. Pomocou nasledujúceho kódu vytvorte tabuľku s názvom „študent“.
CREATE TABLE student (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))
Vložte mená študentov oddelené čiarkami do jedného riadku vykonaním nasledujúceho kódu.
INSERT INTO student (student_name) VALUES ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')
Pomocou nasledujúceho kódu overte, či boli údaje vložené do tabuľky alebo nie.
vyberte * od študenta
Metóda 1: Na rozdelenie reťazca použite funkciu STRING_SPLIT
V serveri SQL Server 2016 „STRING_SPLIT“bola zavedená funkcia, ktorú je možné použiť s úrovňou kompatibility 130 a vyššou. Ak používate verziu SQL Server 2016 alebo vyššiu, môžete použiť túto integrovanú funkciu.
Ďalej „STRING_SPLIT“ zadá reťazec, ktorý má obmedzené podreťazce a vloží jeden znak, ktorý sa použije ako oddeľovač alebo oddeľovač. Funkcia vygeneruje tabuľku s jedným stĺpcom, ktorej riadky obsahujú podreťazce. Názov výstupného stĺpca je „ Hodnota “. Táto funkcia má dva parametre. Prvý parameter je reťazec a druhý parameter oddeľovača alebo oddeľovač, na základe ktorého musíme reťazec rozdeliť. Výstup obsahuje tabuľku s jedným stĺpcom, v ktorej sú podreťazce. Tento výstupný stĺpec je pomenovaný „Hodnota“ ako vidíme na obrázku nižšie. Okrem toho „STRING SPLIT“ funkcia table_valued vráti prázdnu tabuľku, ak je vstupný reťazec NULL.
Úroveň kompatibility databázy:
Každá databáza je prepojená s úrovňou kompatibility. Umožňuje kompatibilitu správania databázy s konkrétnou verziou servera SQL Server, na ktorej beží.
Teraz zavoláme funkciu „string_split“na rozdelenie reťazca oddeleného čiarkami. Úroveň kompatibility však bola nižšia ako 130, preto sa zvýšila nasledujúca chyba. „Neplatný názov objektu„ SPLIT_STRING ““
Preto musíme nastaviť úroveň kompatibility databázy na 130 alebo vyššiu. Podľa tohto kroku teda nastavíme úroveň kompatibility databázy.
Najskôr nastavte databázu na „single_user_access_mode“pomocou nasledujúceho kódu
ALTER DATABASE SET SINGLE_USER
Po druhé, zmeňte úroveň kompatibility databázy pomocou nasledujúceho kódu
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
Vráťte databázu späť do režimu prístupu viacerých používateľov pomocou nasledujúceho kódu
ALTER DATABASE SET MULTI_USER
USE [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
Výstup bude:
Teraz spustite tento kód, aby ste dosiahli požadovaný výsledok.
DECLARE @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * FROM STRING_SPLIT (@string_value, ',')
Výstup pre tento dopyt bude:
Metóda 2: Ak chcete reťazec rozdeliť, vytvorte používateľom definovanú funkciu s hodnotou tabuľky
Túto tradičnú metódu určite podporujú všetky verzie servera SQL Server. V tejto technike vytvoríme používateľom definovanú funkciu na rozdelenie reťazca oddeľovačom pomocou „ PODKLAD”Funkcia,“ CHARINDEX ”A zatiaľ čo slučka. Túto funkciu je možné použiť na pridanie údajov do výstupnej tabuľky, pretože jej návratový typ je „tabuľka“.
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, @ending_position INT SELECT @start_position = koncová_pozícia = CHARINDEX (@delimiter_character, @string_value) WHILE @start_position <LEN (@string_value) + 1 BEGIN IF @ending_position = 0 SET @ending_position = LEN (@string_value) + 1 INSERT INTO @result_set (splited_data) VALUES (SUBSTRING @ string_value, @start_position, @ending_position - @start_position)) SET @start_position = @ending_position + 1 SET @ending_position = CHARINDEX (@delimiter_character, @string_value, @start_position) KONIEC NÁVRAT KONIEC
Teraz spustite nasledujúci skript, aby ste zavolali funkciu split na rozdelenie reťazca podľa oddeľovača.
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)
Výsledná sada bude taká.
Metóda 3: Pomocou nástroja XQuery rozdeľte hodnotu reťazca a transformujte reťazec s oddeľovačmi do formátu XML
Pretože funkcie definované používateľom sú vyčerpávajúce, musíme sa im vyhnúť. Ďalšou možnosťou je zabudovaná funkcia „string_split“, ale túto funkciu je možné použiť pre databázu, pre ktorú je úroveň kompatibility 130 alebo vyššia. Prichádza teda ďalšie riešenie riešenia tejto náročnej úlohy. reťazec je možné rozdeliť pomocou nasledujúceho 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 (('' + Nahradiť (@string_value, @delimiter_value, '') + '') AS XML) SELECT @xml_value
Výstup pre tento dopyt bude:
Ak chcete zobraziť celý súbor XML. Kliknite na odkaz. Po kliknutí bude odkaz vyzerať takto.
Teraz by sa mal reťazec XML ďalej spracovať. Nakoniec použijeme „x-Query“na dopytovanie z 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 (('' + Nahradiť (@string_value, @delimiter_value, '') + '') AS XML) VYBERTE xmquery ('.'). value ('.', 'VARCHAR (15)') AKO HODNOTU Z @ xml_value.nodes ('/ studentname')) AS x (m)
Výstup bude taký:
Odporúča:
Zraniteľnosti Injekcie SQL Na Serveri Seagate Personal Cloud Media Server Umožňujú Načítanie Súkromných údajov
Seagate Media Server je mechanizmus sieťového úložiska UPnp / DLNA zabudovaný do osobného cloudu Seagate na použitie na individuálnej úrovni. V
Ako Používať DROP IF EXISTS Na Serveri SQL Server?
Tento článok pojednáva o výpise „DROP IF EXISTS“, ktorý je k dispozícii v serveri SQL Server 2016 a novších verziách. „IF EXITS“je najnovšia voliteľná klauzula pridaná do
Oprava: Certifikát Alebo Pridružený Reťazec Nie Je Platný
Niekoľko používateľov hlási, že sa nemôžu pripojiť k inému zariadeniu pomocou pripojenia vzdialenej pracovnej plochy. Ovplyvnení používatelia hlásia, že dostávajú
Ako Nastaviť Databázovú Poštu Na Serveri SQL Server Pomocou Služby Gmail?
Vďaka serveru SQL Server 2005 sa veľa vecí zmenilo. V starších verziách sa program SQL Mail spoliehal na to, že má nainštalovaného poštového klienta MAPI
Vytváranie Klastrovaných A Neklastrovaných Indexov Na Serveri SQL Server
Na serveri SQL Server existujú dva typy indexov; Klastrované a nezhrnuté indexy. Klastrované indexy aj klastrové indexy majú rovnakú fyzickú hodnotu