Jak podzielić ciąg przez rozdzielony znak w programie SQL Server?



Wypróbuj Nasz Instrument Do Eliminowania Problemów

W tym artykule omówimy kilka sposobów dzielenia wartości ciągu rozdzielanego. Można to osiągnąć za pomocą wielu metod, w tym.



  • Użycie funkcji STRING_SPLIT do podziału ciągu
  • Utwórz zdefiniowaną przez użytkownika funkcję wycenianą w tabeli, aby podzielić ciąg,
  • Użyj XQuery, aby podzielić wartość ciągu i przekształcić rozdzielany ciąg na XML

Przede wszystkim musimy stworzyć tabelę i wstawić do niej dane, które będą używane we wszystkich trzech metodach. Tabela powinna zawierać pojedynczy wiersz z identyfikatorem pola i ciągiem znaków ze znakami separatora. Utwórz tabelę o nazwie „student”, używając poniższego kodu.



UTWÓRZ TABELĘ ucznia (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

Wstaw nazwiska uczniów oddzielone przecinkami w jednym wierszu, wykonując następujący kod.



WSTAWIĆ DO ucznia (nazwisko ucznia) WARTOŚCI („Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad”)

Tworzenie tabel i wprowadzanie danych

Sprawdź, czy dane zostały wstawione do tabeli, czy nie, używając następującego kodu.

wybierz * od ucznia

Sprawdź, czy dane zostały wstawione do tabeli „uczeń”



Metoda 1: Użyj funkcji STRING_SPLIT, aby podzielić ciąg

W programie SQL Server 2016 „STRING_SPLIT” wprowadzono funkcję, której można używać z poziomem kompatybilności 130 i wyższym. Jeśli używasz wersji 2016 SQL Server lub nowszej, możesz użyć tej wbudowanej funkcji.

Ponadto „STRING_SPLIT” wprowadza ciąg, który ma rozdzielone podciągi i wprowadza jeden znak, który ma być używany jako ogranicznik lub separator. Funkcja wyprowadza tabelę z jedną kolumną, której wiersze zawierają podciągi. Nazwa kolumny wyjściowej to „ Wartość' . Ta funkcja pobiera dwa parametry. Pierwszy parametr to łańcuch, a drugi to separator lub separator, na podstawie którego musimy podzielić ciąg. Dane wyjściowe zawierają jednokolumnową tabelę, w której znajdują się podciągi. Ta kolumna wyjściowa nosi nazwę 'Wartość' jak widać na poniższym rysunku. Ponadto „STRING SPLIT” Funkcja table_valued zwraca pustą tabelę, jeśli ciąg wejściowy ma wartość NULL.

Poziom zgodności bazy danych:

KażdyBaza danychjestpołączonyzdozgodnośćpoziom.Toumożliwiathebazy danychzachowaniedobyćzgodnyz THjestszczególnySQLserwerwersjatobiegniena.

Teraz wywołamy funkcję „string_split”, aby podzielić ciąg rozdzielany przecinkami. Ale poziom zgodności był mniejszy niż 130, dlatego podniesiono następujący błąd. „Nieprawidłowa nazwa obiektu„ SPLIT_STRING ””

Błąd występuje, gdy poziom zgodności bazy danych jest niższy niż 130 „Nieprawidłowa nazwa obiektu split_string”

Dlatego musimy ustawić poziom zgodności bazy danych na 130 lub wyższy. Dlatego będziemy postępować zgodnie z tymi krokami, aby ustawić poziom zgodności bazy danych.

  • Przede wszystkim ustaw bazę danych na „single_user_access_mode” za pomocą następującego kodu.
ALTER DATABASE SET SINGLE_USER
  • Po drugie, zmień poziom zgodności bazy danych przy użyciu następującego kodu.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Umieść bazę danych z powrotem w trybie dostępu dla wielu użytkowników, używając następującego kodu.
ALTER DATABASE SET MULTI_USER
UŻYJ [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

Wynik będzie:

Zmień poziom zgodności na 130

Teraz uruchom ten kod, aby uzyskać wymagany wynik.

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