Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Курсор по строке с разделителями / 9 сообщений из 9, страница 1 из 1
15.08.2022, 09:08
    #116938
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
Когда-то много лет назад подумал, что неплохо бы запилить такое, но руки не дошли. А теперь вот опять понадобилось.

Есть строка, в которой элементы разделены какими-то разделителями. Или переносами строки, или запятыми, или запятыми с пробелами. Надо бы эту строку запулить на sql сервер так, чтобы он с каждой подстрокой выполнил какую-то команду, например, инсерт.

Конечно, правильно сделать все на клиенте. Пробежать по строке, для каждой выполнить команду. Но все-таки. Может, можно сделать все прямо на сервере БД?
...
Рейтинг: 0 / 0
15.08.2022, 09:11
    #116942
PaNik
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
...
Рейтинг: 1 / 0
Нравится: Просто Трёп
15.08.2022, 09:30
    #116952
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
PaNik  15.08.2022, 09:11
[игнорируется]
Оно. Правда, только с 13 версии. Когда я задался этим вопросом в первый раз, этого еще не было. Кайфово, что сделали.
...
Рейтинг: 0 / 0
15.08.2022, 10:09
    #117012
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
До этого все делали свои самописные.
В одной статье (или книжке, не помню) встречал забавный вариант - строку вида '1,2,3' сначала с помощью реплейса приводили к виду '<t>1</t><t>2</t><t>3</t>', ну а потом уже как запрос к xml.
...
Рейтинг: 0 / 0
15.08.2022, 10:54
    #117076
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
Неуловимый Джо  15.08.2022, 10:09
[игнорируется]
До этого все делали свои самописные.
В одной статье (или книжке, не помню) встречал забавный вариант - строку вида '1,2,3' сначала с помощью реплейса приводили к виду '<t>1</t><t>2</t><t>3</t>', ну а потом уже как запрос к xml.
[:biggrin2]

Жесть. Лень делает чудеса.
...
Рейтинг: 0 / 0
15.08.2022, 10:59
    #117081
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
Просто Трёп  15.08.2022, 10:54
[игнорируется]
Неуловимый Джо  15.08.2022, 10:09
[игнорируется]
До этого все делали свои самописные.
В одной статье (или книжке, не помню) встречал забавный вариант - строку вида '1,2,3' сначала с помощью реплейса приводили к виду '<t>1</t><t>2</t><t>3</t>', ну а потом уже как запрос к xml.
[:biggrin2]

Жесть. Лень делает чудеса.
примерно так.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE
  @str VARCHAR(max) = '1,2,3,3'

DECLARE
  @xml XML = '<t>' + REPLACE(@str, ',', '</t><t>') + '</t>'

SELECT
  [id] = P.N.value('.', 'varchar(100)')
FROM @xml.nodes('/t') P(N)
...
Рейтинг: 0 / 0
15.08.2022, 11:03
    #117084
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
Так и сделаю на старом серваке.
...
Рейтинг: 0 / 0
16.08.2022, 01:34
    #117573
Артефакт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
еще можно через рекурсивную CTE и charindex
+ в том что сепаратором может служить несколько символов
...
Рейтинг: 0 / 0
16.08.2022, 09:12
    #117632
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор по строке с разделителями
Артефакт  16.08.2022, 01:34
[игнорируется]
+ в том что сепаратором может служить несколько символов
так и реплейсом можно несколько символов заменять.
...
Рейтинг: 1 / 0
Нравится: Просто Трёп
Форумы / Microsoft SQL Server [закрыт для гостей] / Курсор по строке с разделителями / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]