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

Откуда:
Сообщений: 75
Уважаемые знатоки, подскажите пожалуйста. Необходимо выбрать из таблицы Market значения Games и Pr, при этом я должен в строчке перечислить игры (Games) через запятую и получить их цены (Pr). Все элементарно решается запросом
select games, pr from market where games in ('Колобок', 'Дракон','Красная шапочка').
К сожалению по ряду причин необходимо сделать отчет для пользователя, что бы они не в тексте запроса вбивали имя игрушек, а в отдельной строке. Другими словами, я хочу задекларировать и присвоить этой текстовой строке переменную
declare @games varchar (max)
set @games = 'Колобок', 'Дракон','Красная шапочка'
а в запросе написать
select games, pr from market where games in (@games)
Вот здесь то и ничего не получается. Как можно это решить?
25 май 11, 17:09    [10708405]     Ответить | Цитировать Сообщить модератору
 Re: Конструкция запроса с переменными  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
zzz68
Уважаемые знатоки, подскажите пожалуйста. Необходимо выбрать из таблицы Market значения Games и Pr, при этом я должен в строчке перечислить игры (Games) через запятую и получить их цены (Pr). Все элементарно решается запросом
select games, pr from market where games in ('Колобок', 'Дракон','Красная шапочка').
К сожалению по ряду причин необходимо сделать отчет для пользователя, что бы они не в тексте запроса вбивали имя игрушек, а в отдельной строке. Другими словами, я хочу задекларировать и присвоить этой текстовой строке переменную
declare @games varchar (max)
set @games = 'Колобок', 'Дракон','Красная шапочка'
а в запросе написать
select games, pr from market where games in (@games)
Вот здесь то и ничего не получается. Как можно это решить?
А здесь, стало быть, получается?
set @games = 'Колобок', 'Дракон','Красная шапочка'
???
25 май 11, 17:18    [10708480]     Ответить | Цитировать Сообщить модератору
 Re: Конструкция запроса с переменными  [new]
zzz68
Member

Откуда:
Сообщений: 75
iap,
А здесь, стало быть, получается?
set @games = 'Колобок', 'Дракон','Красная шапочка'???

Нет, запятые он не воспринимает, только если так, но это все равно что все эти игрушки соединить в одну 'Колобок, Дракон,Красная шапочка'

Получится - Толстенькая красная шапочка о трех головах с личиком дракона. Пользователи разбегутся от такого гибрида.))
25 май 11, 17:38    [10708644]     Ответить | Цитировать Сообщить модератору
 Re: Конструкция запроса с переменными  [new]
автор2
Guest
declare @games nvarchar(100)
declare @sql nvarchar(255)

SELECT @games = '''Колобок'', ''Дракон'',''Красная шапочка'''

SELECT @sql = 'select games, pr from market where games in (' + @games + ')'

exec sp_executesql @sql

zzz68
Уважаемые знатоки, подскажите пожалуйста. Необходимо выбрать из таблицы Market значения Games и Pr, при этом я должен в строчке перечислить игры (Games) через запятую и получить их цены (Pr). Все элементарно решается запросом
select games, pr from market where games in ('Колобок', 'Дракон','Красная шапочка').
К сожалению по ряду причин необходимо сделать отчет для пользователя, что бы они не в тексте запроса вбивали имя игрушек, а в отдельной строке. Другими словами, я хочу задекларировать и присвоить этой текстовой строке переменную
declare @games varchar (max)
set @games = 'Колобок', 'Дракон','Красная шапочка'
а в запросе написать
select games, pr from market where games in (@games)
Вот здесь то и ничего не получается. Как можно это решить?
25 май 11, 17:54    [10708771]     Ответить | Цитировать Сообщить модератору
 Re: Конструкция запроса с переменными  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
автор2
exec sp_executesql @sql
exec dbo.spFoo '''Колобок'', ''Дракон'',''Красная шапочка''); DROP TABLE dbo.Users; --'
Т.к. это приходит с браузера, то так оно и будет.
А если генерирится, то перестаньте делать лишнюю работу и передавайте таблицу в явнов виде.
25 май 11, 18:33    [10708972]     Ответить | Цитировать Сообщить модератору
 Re: Конструкция запроса с переменными  [new]
Начинающий SQL 2008
Member

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

???

declare @Where_ID_in varchar(max), @xml_str xml

set @Where_ID_in = 'a,b,c,d'
set @xml_str = '<b>' + replace(@Where_ID_in, ',', '</b><b>')+'</b>'
--select @xml_str
select f.value('.', 'varchar(max)') from @xml_str.nodes('b') R(f)
25 май 11, 18:51    [10709057]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить