В этой статье мы обсудим несколько способов разделения строкового значения с разделителями. Это может быть достигнуто с помощью нескольких методов, включая.
- Использование функции 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,