Как да разделя низ от разделител Char в SQL Server?



Опитайте Нашия Инструмент За Премахване На Проблемите

В тази статия ще обсъдим няколко начина за разделяне на разделената стойност на низа. Тя може да бъде постигната с помощта на множество методи, включително.



  • Използване на функцията STRING_SPLIT за разделяне на низа
  • Създайте дефинирана от потребителя функция с таблична стойност за разделяне на низа,
  • Използвайте XQuery, за да разделите стойността на низа и да трансформирате разделен низ в XML

На първо място, трябва да създадем таблица и да вмъкнем в нея данни, които ще се използват и в трите метода. Таблицата трябва да съдържа един ред с идентификатор на поле и низ с разделители в него. Създайте таблица с име „студент“, като използвате следния код.



СЪЗДАВАНЕ НА ТАБЛИЦА студент (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

Вмъкнете имената на учениците, разделени със запетаи, в един ред, като изпълните следния код.



ВЪВЕДЕТЕ В СТОЙНОСТИ на студент (име_на студент) ('Монрой, Монтанез, Маролахакис, Негли, Олбрайт, Гарофоло, Перейра, Джонсън, Вагнер, Конрад')

Създаване на таблици и вмъкване на данни

Проверете дали данните са вмъкнати в таблицата или не, като използвате следния код.

изберете * от студент

Проверете дали данните са вмъкнати в таблицата „студент“



Метод 1: Използвайте функцията STRING_SPLIT, за да разделите низа

В SQL Server 2016, „STRING_SPLIT“ Въведена е функция, която може да се използва със ниво на съвместимост 130 и по-високо. Ако използвате 2016 SQL Server версия или по-нова, можете да използвате тази вградена функция.

освен това „STRING_SPLIT“ въвежда низ, който има разделителни поднизове и въвежда един символ, който да се използва като разделител или разделител. Функцията извежда таблица с една колона, чиито редове съдържат поднизовете. Името на изходната колона е „ Стойност ” . Тази функция получава два параметъра. Първият параметър е низ, а вторият е разделител или разделител, въз основа на който трябва да разделим низа. Изходът съдържа таблица с една колона, в която присъстват поднизове. Тази изходна колона е наречена „Стойност“ както виждаме на фигурата по-долу. Освен това „STRING SPLIT“ Функцията table_valued връща празна таблица, ако входният низ е NULL.

Ниво на съвместимост на базата данни:

Всекибаза данниесвързанисда сесъвместимостниво.Топозволяванабаза данниповедениеда себъдасъвместимис thеособеноSQLСървърверсиятобягаНа.

Сега ще извикаме функцията “string_split” за разделяне на низа, разделени със запетаи. Но нивото на съвместимост беше по-малко от 130, поради което беше повдигната следваща грешка. „Невалидно име на обект„ SPLIT_STRING ““

Възниква грешка, ако нивото на съвместимост на базата данни е по-ниско от 130 „Невалидно име на обект split_string“

По този начин трябва да зададем ниво на съвместимост на базата данни на 130 или по-високо. Затова ще следваме тази стъпка, за да зададем нивото на съвместимост на базата данни.

  • На първо място задайте база данни на “single_user_access_mode”, като използвате следния код.
ALTER DATABASE SET SET SINGLE_USER
  • На второ място, променете нивото на съвместимост на базата данни, като използвате следния код.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Върнете базата данни в режим за многопотребителски достъп, като използвате следния код.
ALTER DATABASE SET MULTI_USER
ИЗПОЛЗВАЙТЕ [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

Резултатът ще бъде:

Променете нивото на съвместимост на 130

Сега изпълнете този код, за да получите необходимия резултат.

DECLARE @string_value VARCHAR (MAX); SET @ string_value = 'Монрой, Монтанез, Маролахакис, Негли, Олбрайт, Гарофоло, Перейра, Джонсън, Вагнер, Конрад' SELECT * ОТ STRING_SPLIT (@string_value,