powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поочерёдно вставить значения из строки
13 сообщений из 13, страница 1 из 1
Поочерёдно вставить значения из строки
    #39936468
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть строка

176,92,184,183,173

Необходимо поочерёдно вставлять значения в запрос типа

SELECT...
WHERE id=@num

Как это можно сделать?
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936469
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936470
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

версия сиквела какая?
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936472
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
с этим понятно, но требуется немного другое. Грубо говоря, кол-во значений в строке = кол-ву запросов
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936473
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936477
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

со студией понятно, покажите результат
Код: sql
1.
select @@version
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936478
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
Microsoft SQL Server 2016 (SP2-CU11-GDR) (KB4535706) - 13.0.5622.0 (X64) Dec 15 2019 08:03:11 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936491
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11
Гавриленко Сергей Алексеевич,
с этим понятно, но требуется немного другое. Грубо говоря, кол-во значений в строке = кол-ву запросов
Гавриленко Сергей Алексеевич про это и написал.

Вопрос, вообще говоря, возникает раз в неделю на протяжении 20 лет, для новых версий используйте STRING_SPLIT, для старых масса вариантов рассмотрена в ФАКе.

Создаёте набор записей из строки, вставляете во временную табличку, потом курсором поочерёдно перебираете значения.
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936560
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может есть какой то пример?
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936573
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11
Может есть какой то пример?

Примерно так:
Пришете ваш SELECT ... WHERE [id] =
Дабл кликаете по цифре, выделяется все число.
Нажимаете CTRL+C, перемещаете курсор на пустое место после =, нажимаете CTRL+V.
Повторяете, пока не разберете всю строку.
Получится что-то вроде такого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--176,92,184,183,173
SELECT
  ...
WHERE
  [id] = 176
;
SELECT
  ...
WHERE
  [id] = 92
;


Вы молодец.
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936579
Earl11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, уже разобрался
...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936597
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Earl11,

Наверное уже опоздал с помощью, - но тем не менее - вдруг пригодится

Безприменительно к версиям и прочим премудростям - старый добрый курсор


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
IF OBJECT_ID('TempDb..#Table_Numbers') IS NOT NULL
DROP TABLE #Table_Numbers

CREATE TABLE #Table_Numbers(val INT)

DECLARE @str AS VARCHAR(MAX)
SET @str = '1,2,3,50,90'
SET @str = 'SELECT ' + REPLACE(@str,',',' UNION ALL SELECT ')

INSERT INTO #Table_Numbers
EXEC (@str)
-- ####################################

DECLARE @Int_Value varchar(8000), @SQLCMD varchar(8000);

DECLARE Values_Cursor CURSOR READ_ONLY FOR
SELECT t.val FROM #Table_Numbers as t

OPEN Values_Cursor;
FETCH NEXT FROM Values_Cursor into @Int_Value;
WHILE @@FETCH_STATUS = 0
   BEGIN
set @SQLCMD='SELECT * FROM Some_Table WHERE id = @' + @Int_Value +''

print @SQLCMD;
--exec (@SQLCMD);
      FETCH NEXT FROM Values_Cursor into @Int_Value;
   END;
CLOSE Values_Cursor;
DEALLOCATE Values_Cursor;
GO


...
Рейтинг: 0 / 0
Поочерёдно вставить значения из строки
    #39936602
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,

Соответственно - сколько задано целочисленных значений через запятую - столько строк в курсор и попадет, и столько итоговых строк с SELECT в финальном результирующем наборе и будет
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поочерёдно вставить значения из строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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