powered by simpleCommunicator - 2.0.17     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Курсор по строке с разделителями
9 сообщений из 9, страница 1 из 1
Курсор по строке с разделителями
    #116938
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда-то много лет назад подумал, что неплохо бы запилить такое, но руки не дошли. А теперь вот опять понадобилось.

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

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

Жесть. Лень делает чудеса.
...
Рейтинг: 0 / 0
Курсор по строке с разделителями
    #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
Курсор по строке с разделителями
    #117084
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и сделаю на старом серваке.
...
Рейтинг: 0 / 0
Курсор по строке с разделителями
    #117573
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
еще можно через рекурсивную CTE и charindex
+ в том что сепаратором может служить несколько символов
...
Рейтинг: 0 / 0
Курсор по строке с разделителями
    #117632
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Артефакт  16.08.2022, 01:34
[игнорируется]
+ в том что сепаратором может служить несколько символов
так и реплейсом можно несколько символов заменять.
...
Рейтинг: 1 / 0
Нравится: Просто Трёп
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [закрыт для гостей] / Курсор по строке с разделителями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (2): Анонимы (2)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Bing Bot 5 мин.
Пользователи онлайн (34): Анонимы (23), Шоколадный01, Green, Bing Bot, Просто Трёп, Google Bot, sergey11 1 мин., anonymous 1 мин., Yandex Bot 1 мин., Vaska Balboa 4 мин., Ветер 8 мин., Неуловимый Джо 9 мин.
x
x
Закрыть


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