Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
icef1ery Member Откуда: Сообщений: 61 |
Здравствуйте ребята. Вот столкнулся с проблемой надеюсь кто нибудь подскажет. Если в программе мне нужно выбрать любое значение строчки (string) то sql серверу я передаю: where table1.id Like :id И в программе (delphi) я пишу: Parameters.ParamByName('id').Value:='%'; А что нужно написать в sql если мне нужно передать значение int и значение float(double), если Like использовать нельзя (не строка ведь)? Заранее спасибо. |
17 мар 14, 13:26 [15737841] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
icef1ery, если "в программе мне нужно выбрать любое значение", то серверу в WHERE с клиента не надо ничего передавать! |
17 мар 14, 13:31 [15737884] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
Нужно. Может я не так выразился. Хорошо, извиняюсь, допишу. Цель передать запросу sel_id (ADOQuery) параметр
id
в строчку
Where
, где он (параметр) будет равняться любому значению из таблицы Table1.id (тип int и/или float)И соответственно при отображении DBGridEh1 получить таблицу где параметр
id
будут принимать все имеющиеся в таблице значения параметра. Т.е. по русски - Любое значение для переменных типа int и float.
|
||
17 мар 14, 13:45 [15737997] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
FAQ - Переменное число критериев отбора в запросе |
17 мар 14, 13:48 [15738024] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
за ссылку спасибо. Помогло на стороне SQL теперь нужно додуматься как передать параметр в sql из приложения клиента. Like предаётся '%' а вот остальные как передать int float будем искать. |
||
17 мар 14, 14:17 [15738305] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы знаете, что такое NULL ? |
||
17 мар 14, 14:19 [15738319] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
Конечно, отсутствие какого либо значения = пустое поле. |
||||
17 мар 14, 14:21 [15738342] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
то передавайте параметр @id IS NULL. Тогда запрос будет WHERE @id IS NULL OR id=@id |
||||
17 мар 14, 14:22 [15738345] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
И оно отнюдь не равно пустому значению (для строки, например, '') |
||||
17 мар 14, 14:24 [15738366] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
Соглашусь с вашим замечанием на счёт null. Но мне пока не понятно как передать значение 'int' из Клинета (delphi). Как передать этот параметр. Для строкового параметра (string): Parameters.ParamByName('id').DataType:=ftString; Parameters.ParamByName('id').Value:='%'; А для int не понятно. |
||||
17 мар 14, 14:42 [15738592] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Parameters.ParamByName('id').Value:=NULL;
|
||||
17 мар 14, 14:50 [15738678] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
|
||||
17 мар 14, 14:50 [15738682] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
ЛибоParameters.ParamByName('id').Clear; |
17 мар 14, 15:10 [15738888] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
Уважаемый iap, вот я попробовал собрать все наши записи и получилось, что то типа: declare @id int=:id select id from Table 1 where @id IS NULL OR id=@id Верно? |
||||
17 мар 14, 15:20 [15738992] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
У меня делфи не позволяет сделать Clear Parameters.ParamByName('k').CleanupInstanceЕдинственное что есть. если набрать 'Cle' |
||
17 мар 14, 15:24 [15739029] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
1 не может сама по себе быть алиасом - тоже потребовались бы скобки. Так что declare @id int=:id select id from [Table 1] where @id IS NULL OR id=@id |
||||
17 мар 14, 15:24 [15739032] Ответить | Цитировать Сообщить модератору |
icef1ery Member Откуда: Сообщений: 61 |
Вроде начало проясняться спасибо всем кто помогал! |
17 мар 14, 16:48 [15739851] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Не лучше ли избежать сравнения OR?where id = isnull(@id,id) |
17 мар 14, 18:09 [15740461] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |