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

Откуда:
Сообщений: 4
Здравствуйте,помогите составить запрос.
Это не работает в Microsoft SQL.

Собираю строку с параметрами вот в таком виде

'~12~23~267~675~'
и запрос пишу

Select тыры-пыры
From Table T
Where :ParamStr Containing '~'||T.ID||'~'

Напишите пожалуйста код который имеет этот же функционал в Microsoft SQL.

Заранее Благодарен.
20 июл 12, 11:24    [12892262]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Glory
Member

Откуда:
Сообщений: 104751
PaladinMacUser
Собираю строку с параметрами вот в таком виде

'~12~23~267~675~'

Зачем ? Без "собирания" нельзя сразу занести все значения во временную таблицу ?
20 июл 12, 11:29    [12892321]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
PaladinMacUser
Member

Откуда:
Сообщений: 4
я незнаю как это сделать,я это всё делаю в Visual Stuidio 2012. мне просто нужен этот код который бы выводил все записи с нужным id.но так как переменная которая содержит это id является int то я не могу сделать чтоб выдала несколько записей.
20 июл 12, 11:45    [12892433]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
PaladinMacUser,
Посмотрите табличные переменные.Гугл в помощь!!
20 июл 12, 12:02    [12892563]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
denis2710
PaladinMacUser,
Посмотрите табличные переменные.Гугл в помощь!!

Я бы серализовал в xml, тем более из CLR
20 июл 12, 12:04    [12892574]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
slyer.bo
Member

Откуда: Минск
Сообщений: 20
Есть много способов. Посмотри, например, сюда
20 июл 12, 12:41    [12892858]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Я безнодадёжно отстал

1. Что такое "Containing"?
2. "||" - это новый оператор? Что делает?
3. T.ID какого типа?

Никаких вопросов не вызывает только "тыры-пыры"!
20 июл 12, 12:49    [12892934]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
slyer.bo
Member

Откуда: Минск
Сообщений: 20
iap
Я безнодадёжно отстал

1. Что такое "Containing"?
2. "||" - это новый оператор? Что делает?
3. T.ID какого типа?

Никаких вопросов не вызывает только "тыры-пыры"!


Ну зачем же стебаться?
Человеку помощь нужна, ну не все тут такие на форуме крутые...
20 июл 12, 12:52    [12892957]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Да, кстати, || - оракловский оператор конкатенации, в SQL server таки работать не будет)
20 июл 12, 12:56    [12892991]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
slyer.bo
iap
Я безнодадёжно отстал

1. Что такое "Containing"?
2. "||" - это новый оператор? Что делает?
3. T.ID какого типа?

Никаких вопросов не вызывает только "тыры-пыры"!


Ну зачем же стебаться?
Человеку помощь нужна, ну не все тут такие на форуме крутые...


а причем тут стебаться, я вот тоже смотрю и не понимаю, а чего собственно нужно человеку.
Все таки объяснять свои просьбы нужно общедоступным языком, а не какими то спец командами неизвестного происхождения
20 июл 12, 13:00    [12893002]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
PaladinMacUser
Member

Откуда:
Сообщений: 4
Постораюсь обьяснить более понятно,есть база данных с пользователями у каждого пользователя есть номер-идентификатор ID,нужно чтобы при вводе нескольких ID вывести этих пользователей,тоесть к примеру пользователи с ID 1,4,9,12,20 и тд.
Я смог только сделать когда можно вывести только 1 запись,ввести только 1 ID, а не несколько,как же сделать запрос чтоб можно было ввести много ID чтоб вывести множество пользователей.
20 июл 12, 13:44    [12893241]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Я
Guest
В таблицу ИД пишите. Все просто до безобразия
20 июл 12, 14:09    [12893370]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
PaladinMacUser
Member

Откуда:
Сообщений: 4
как ни странно этомогло показаться,но мне не очень понятно)
20 июл 12, 14:20    [12893432]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
iap
Member

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

куда параметр-то передаётся?
Версию сервера сообщите?
20 июл 12, 14:28    [12893476]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Я
Guest
Создаете таблицу, в нее пишите нужные ИД. В запросе используете значения из этой таблицы как критерий отбора

SELECT ***********
FROM ********
WHERE ID IN (SELECT ID FROM [таблица с ИД])
20 июл 12, 14:29    [12893479]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
iap
Member

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

и статья есть по Вашему вопросу (правда, без табличных параметров и XML):
https://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml
20 июл 12, 14:30    [12893498]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Я
Создаете таблицу, в нее пишите нужные ИД. В запросе используете значения из этой таблицы как критерий отбора

SELECT ***********
FROM ********
WHERE ID IN (SELECT ID FROM [таблица с ИД])
Это Вы, значит, с базой работаете один-одинёшинек?
А если вас будет 100 человек одновременно?
20 июл 12, 14:33    [12893513]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Я
Guest
В таблице 2 поля - ИД и юзер
20 июл 12, 14:44    [12893591]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Я
В таблице 2 поля - ИД и юзер
А если у пользователя запущено более одного экземпляра приложения?
20 июл 12, 15:33    [12893918]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Я
Guest
invm
Я
В таблице 2 поля - ИД и юзер
А если у пользователя запущено более одного экземпляра приложения?


Если нужно в разных экземплярах использовать разные критерии, придется отслеживать экземпляры. Думаю, это не сложно
20 июл 12, 15:41    [12893979]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Я, угу.

А еще, например, придется отслеживать несколько экземпляров приложения, да еще работающих в режиме MARS. И много еще чего отслеживать.

Зачем весь этот гимор, если есть более простые и надежные способы?
20 июл 12, 15:59    [12894108]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
declare @p xml;

set @p = '<x>' + replace('12~23~267~675', '~', '</x><x>') + '</x>';

select t.c.value('.', 'int') as id
  from @p.nodes('/x') t(c)


вы идёте по головняковому пути
20 июл 12, 17:20    [12894523]     Ответить | Цитировать Сообщить модератору
 Re: как в параметр передать несколько значений  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 20362
NIIIK, если уж идти по такому "головняковому пути", то тогда надо добавлять разделитель в начало и конец строки, и искать по строке "разделитель"+идентификатор+"разделитель".
Хотя совершенно непонятно, почему нельзя сформировать непосредственно перечень значений для IN (через запятую), их там 100500+ что ли?
20 июл 12, 19:55    [12894915]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить