Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поочерёдно вставить значения из строки / 13 сообщений из 13, страница 1 из 1
12.03.2020, 00:58
    #39936468
Earl11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочерёдно вставить значения из строки
Есть строка

176,92,184,183,173

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

SELECT...
WHERE id=@num

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

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

со студией понятно, покажите результат
Код: sql
1.
select @@version
...
Рейтинг: 0 / 0
12.03.2020, 03:51
    #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
12.03.2020, 07:19
    #39936491
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочерёдно вставить значения из строки
Earl11
Гавриленко Сергей Алексеевич,
с этим понятно, но требуется немного другое. Грубо говоря, кол-во значений в строке = кол-ву запросов
Гавриленко Сергей Алексеевич про это и написал.

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

Создаёте набор записей из строки, вставляете во временную табличку, потом курсором поочерёдно перебираете значения.
...
Рейтинг: 0 / 0
12.03.2020, 09:58
    #39936560
Earl11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочерёдно вставить значения из строки
Может есть какой то пример?
...
Рейтинг: 0 / 0
12.03.2020, 10:21
    #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
12.03.2020, 10:37
    #39936579
Earl11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочерёдно вставить значения из строки
Спасибо, уже разобрался
...
Рейтинг: 0 / 0
12.03.2020, 11:35
    #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
12.03.2020, 11:45
    #39936602
PsyMisha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочерёдно вставить значения из строки
PsyMisha,

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


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