Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Входит ли значение переменной в список значений  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 319
В процедуре есть списки значений:

1) 1,3,5,10,20,30,1000

2) 2,4,8,11,13,111,2000

3) 12,14,16,22,33,44,55


в процедуру передается параметр со значением (к примеру "8").

Нужно определить к какому списку относится значение "8", и другой переменой присвоить значение "2" (т.к.
значение 8 - относится к списку № 2).

Как это реализовать ?
16 июл 14, 13:07    [16311972]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
И в каком виде эти списки значений?
16 июл 14, 13:11    [16311995]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
_human
Member

Откуда:
Сообщений: 569
Aleks_Aleks,

список это таблица ?

charindex('8,', 'список №2') > 0
charindex(',8', 'список №2') > 0
charindex(',8,', 'список №2') > 0
16 июл 14, 13:12    [16311999]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9157
автор
Как это реализовать ?


Отказаться от хард-кодинга таких переменных, внести значения в таблицу.
16 июл 14, 13:20    [16312071]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 319
Список - это столбец ID из таблицы Docum.
16 июл 14, 13:22    [16312084]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 319
_human,

DECLARE @document varchar(1000);
DECLARE @TempP varchar(10);

SET @TempP=604

SELECT @document = '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,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
650,651,1001,1002,1003';
IF CHARINDEX(@TempP, @document)>0 SET @TempP =1

SELECT @TempP


Так уже хорошо, но может можно как нить по лучше )
16 июл 14, 13:28    [16312135]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Aleks_Aleks
_human,

DECLARE @document varchar(1000);
DECLARE @TempP varchar(10);

SET @TempP=604

SELECT @document = '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,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
650,651,1001,1002,1003';
IF CHARINDEX(@TempP, @document)>0 SET @TempP =1

SELECT @TempP



Так уже хорошо, но может можно как нить по лучше )
Точно хорошо? А если SET @TempP=1?
16 июл 14, 13:29    [16312145]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 319
Гавриленко Сергей Алексеевич,

Тогда не очень хорошо (
16 июл 14, 13:35    [16312183]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вообще, этот бред надо бы нормализовать.

Если лень, то есть следующие варианты:

1. Дописать в начале и в конце списка по запятой и искать CHARINDEX(',' + @TempP + ',', @document). Это при условии, что нигде нет пробелов.
2. Парсить строку в рекордсет любым способом отсюда: https://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml
16 июл 14, 13:38    [16312198]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
_human
Member

Откуда:
Сообщений: 569
Aleks_Aleks,

DECLARE @document varchar(1000);
DECLARE @TempP varchar(10);

SET @TempP='1'

SELECT @document = '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,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
650,651,1001,1002,1003';

IF 
	CHARINDEX(','+ @TempP+',', @document) > 0

SET @TempP = 'ok'
else SET @TempP = 'nope'

SELECT @TempP


нужно еще учесть, вариант в концом/началом этого архитектурного решения.
16 июл 14, 13:41    [16312216]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 319
Данная функция подошла, проверил работает как нужно )

Всем большое спасибо !!
16 июл 14, 13:47    [16312264]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
_human
Aleks_Aleks,

DECLARE @document varchar(1000);
DECLARE @TempP varchar(10);

SET @TempP='1'

SELECT @document = '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,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,
650,651,1001,1002,1003';

IF 
	CHARINDEX(','+ @TempP+',', @document) > 0

SET @TempP = 'ok'
else SET @TempP = 'nope'

SELECT @TempP



нужно еще учесть, вариант в концом/началом этого архитектурного решения.
К @documentу добавить запятые с двух сторон!!
Семён Семёныч... ©
16 июл 14, 13:48    [16312265]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
_human,

стесняюсь спросить... А что такое "nope"?
16 июл 14, 13:49    [16312278]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap
_human,

стесняюсь спросить... А что такое "nope"?

нет
16 июл 14, 13:50    [16312283]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9157
"не-а" по-русски :)
16 июл 14, 13:55    [16312312]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9157
автор
SELECT @document = '2,3,4,5,6,7,8,9'

Это изврат, если значение параметра от клиента - передавайте XML, если хардкод - внесите список в таблицу.
16 июл 14, 13:59    [16312337]     Ответить | Цитировать Сообщить модератору
 Re: Входит ли значение переменной в список значений  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4974
_human
Aleks_Aleks,

список это таблица ?

charindex('8,', 'список №2') > 0
charindex(',8', 'список №2') > 0
charindex(',8,', 'список №2') > 0


Поставьте 2 запятые с обоих сторон строки и используйте только

charindex(',8,', 'список №2') > 0
16 июл 14, 15:26    [16313058]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить