Как разбить строку на символ с разделителями в SQL Server?



Попробуйте наш инструмент устранения неполадок

В этой статье мы обсудим несколько способов разделения строкового значения с разделителями. Это может быть достигнуто с помощью нескольких методов, включая.



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

Прежде всего, нам нужно создать таблицу и вставить в нее данные, которые будут использоваться во всех трех методах. Таблица должна содержать одну строку с идентификатором поля и строку с символами-разделителями в ней. Создайте таблицу с именем «студент», используя следующий код.



СОЗДАТЬ ТАБЛИЦУ ученика (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

Вставьте имена студентов, разделенные запятыми, в одну строку, выполнив следующий код.



ВСТАВИТЬ студент (имя_студента) ЗНАЧЕНИЯ («Монрой, Монтанез, Маролахакис, Негли, Олбрайт, Гарофоло, Перейра, Джонсон, Вагнер, Конрад»)

Создание таблицы и вставка данных

Убедитесь, что данные были вставлены в таблицу или нет, используя следующий код.

выберите * от студента

Убедитесь, что данные были вставлены в таблицу «ученик»



Метод 1. Используйте функцию STRING_SPLIT, чтобы разделить строку

В SQL Server 2016 «STRING_SPLIT» была введена функция, которая может использоваться с уровнем совместимости 130 и выше. Если вы используете версию SQL Server 2016 или выше, вы можете использовать эту встроенную функцию.

более того «STRING_SPLIT» вводит строку с разделителями подстроки и вводит один символ для использования в качестве разделителя или разделителя. Функция выводит таблицу с одним столбцом, строки которой содержат подстроки. Имя выходного столбца - « Значение' . Эта функция получает два параметра. Первый параметр - это строка, а второй - символ-разделитель или разделитель, на основе которого мы должны разделить строку. Выходные данные содержат таблицу с одним столбцом, в которой присутствуют подстроки. Этот выходной столбец называется 'Значение' как мы видим на рисунке ниже. Более того, «СТРОКА РАЗДЕЛЕНА» Функция table_valued возвращает пустую таблицу, если входная строка имеет значение NULL.

Уровень совместимости базы данных:

Каждыйбаза данныхявляетсясвязаныс участиемксовместимостьуровень.Этопозволяетвбазы данныхповедениекбытьсовместимыйс thявляетсячастностиSQLСерверверсияЭтобежитна.

Теперь вызовем функцию «string_split», чтобы разделить строку, разделенную запятыми. Но уровень совместимости был меньше 130, поэтому возникла следующая ошибка. «Недействительное имя объекта« SPLIT_STRING »»

Ошибка возникает, если уровень совместимости базы данных ниже 130 «Недействительное имя объекта split_string»

Таким образом, нам нужно установить уровень совместимости базы данных 130 или выше. Итак, мы будем следовать этому шагу, чтобы установить уровень совместимости базы данных.

  • Прежде всего установите для базы данных значение «single_user_access_mode», используя следующий код.
ALTER DATABASE SET SINGLE_USER
  • Во-вторых, измените уровень совместимости базы данных, используя следующий код.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • Верните базу данных в режим многопользовательского доступа, используя следующий код.
ALTER DATABASE SET MULTI_USER
ИСПОЛЬЗУЙТЕ [мастер] 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

Теперь запустите этот код, чтобы получить требуемый результат.

ОБЪЯВИТЬ @string_value VARCHAR (MAX); SET @ string_value = 'Монрой, Монтанез, Маролахакис, Негли, Олбрайт, Гарофоло, Перейра, Джонсон, Вагнер, Конрад' ВЫБРАТЬ * ИЗ STRING_SPLIT (@string_value,