Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Sql передача в ''Where'' любого значения int и float  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

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

если "в программе мне нужно выбрать любое значение",
то серверу в WHERE с клиента не надо ничего передавать!
17 мар 14, 13:31    [15737884]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
iap
то серверу в WHERE с клиента не надо ничего передавать!


Нужно. Может я не так выразился. Хорошо, извиняюсь, допишу.

Цель передать запросу sel_id (ADOQuery) параметр
id
в строчку
Where
, где он (параметр) будет равняться любому значению из таблицы Table1.id (тип int и/или float)

И соответственно при отображении DBGridEh1 получить таблицу где параметр
id
будут принимать все имеющиеся в таблице значения параметра. Т.е. по русски - Любое значение для переменных типа int и float.
17 мар 14, 13:45    [15737997]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
Glory
Member

Откуда:
Сообщений: 104760
FAQ - Переменное число критериев отбора в запросе
17 мар 14, 13:48    [15738024]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
Glory
FAQ - Переменное число критериев отбора в запросе


за ссылку спасибо.

Помогло на стороне SQL теперь нужно додуматься как передать параметр в sql из приложения клиента.
Like предаётся '%'
а вот остальные как передать
int
float
будем искать.
17 мар 14, 14:17    [15738305]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
Glory
Member

Откуда:
Сообщений: 104760
icef1ery
а вот остальные как передать
int
float
будем искать.

Вы знаете, что такое NULL ?
17 мар 14, 14:19    [15738319]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
Glory
icef1ery
а вот остальные как передать
int
float
будем искать.

Вы знаете, что такое NULL ?


Конечно, отсутствие какого либо значения = пустое поле.
17 мар 14, 14:21    [15738342]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
icef1ery
iap
то серверу в WHERE с клиента не надо ничего передавать!


Нужно. Может я не так выразился. Хорошо, извиняюсь, допишу.

Цель передать запросу sel_id (ADOQuery) параметр
id

в строчку
Where

, где он (параметр) будет равняться любому значению из таблицы Table1.id (тип int и/или float)

И соответственно при отображении DBGridEh1 получить таблицу где параметр
id

будут принимать все имеющиеся в таблице значения параметра. Т.е. по русски - Любое значение для переменных типа int и float.
Если id не может принимать значения NULL,
то передавайте параметр @id IS NULL. Тогда запрос будет
WHERE @id IS NULL OR id=@id
17 мар 14, 14:22    [15738345]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
icef1ery
Glory
пропущено...

Вы знаете, что такое NULL ?


Конечно, отсутствие какого либо значения = пустое поле.
Нет. Это присутствие значения, но неизвестно какого - UNKNOWN по терминологии MS.
И оно отнюдь не равно пустому значению (для строки, например, '')
17 мар 14, 14:24    [15738366]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
iap
icef1ery
пропущено...


Конечно, отсутствие какого либо значения = пустое поле.
Нет. Это присутствие значения, но неизвестно какого - UNKNOWN по терминологии MS.
И оно отнюдь не равно пустому значению (для строки, например, '')


Соглашусь с вашим замечанием на счёт null. Но мне пока не понятно как передать значение 'int' из Клинета (delphi). Как передать этот параметр.

Для строкового параметра (string):
  Parameters.ParamByName('id').DataType:=ftString;
  Parameters.ParamByName('id').Value:='%';


А для int не понятно.
17 мар 14, 14:42    [15738592]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
icef1ery
iap
пропущено...
Нет. Это присутствие значения, но неизвестно какого - UNKNOWN по терминологии MS.
И оно отнюдь не равно пустому значению (для строки, например, '')


Соглашусь с вашим замечанием на счёт null. Но мне пока не понятно как передать значение 'int' из Клинета (delphi). Как передать этот параметр.

Для строкового параметра (string):
  Parameters.ParamByName('id').DataType:=ftString;
  Parameters.ParamByName('id').Value:='%';



А для int не понятно.
Parameters.ParamByName('id').Value:=NULL;
17 мар 14, 14:50    [15738678]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
iap
icef1ery
пропущено...


Соглашусь с вашим замечанием на счёт null. Но мне пока не понятно как передать значение 'int' из Клинета (delphi). Как передать этот параметр.

Для строкового параметра (string):
  Parameters.ParamByName('id').DataType:=ftString;
  Parameters.ParamByName('id').Value:='%';




А для int не понятно.
Parameters.ParamByName('id').Value:=NULL;
Для любого типа параметра
17 мар 14, 14:50    [15738682]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Либо
Parameters.ParamByName('id').Clear;
17 мар 14, 15:10    [15738888]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
iap
iap
пропущено...
Parameters.ParamByName('id').Value:=NULL;
Для любого типа параметра


Уважаемый iap, вот я попробовал собрать все наши записи и получилось, что то типа:

  declare
  @id int=:id
  
  select id from Table 1 
  where @id IS NULL OR id=@id   


Верно?
17 мар 14, 15:20    [15738992]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
invm
Либо
Parameters.ParamByName('id').Clear;


У меня делфи не позволяет сделать Clear

Parameters.ParamByName('k').CleanupInstance
Единственное что есть. если набрать 'Cle'
17 мар 14, 15:24    [15739029]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
icef1ery
iap
пропущено...
Для любого типа параметра


Уважаемый iap, вот я попробовал собрать все наши записи и получилось, что то типа:

  declare
  @id int=:id
  
  select id from Table 1 
  where @id IS NULL OR id=@id   



Верно?
В именах объекта пробелы можно использовать только в квадратных скобках или в двойных кавычках при SET QUOTED_IDENTIFIER ON
1 не может сама по себе быть алиасом - тоже потребовались бы скобки.
Так что
  declare
  @id int=:id
  
  select id from [Table 1]
  where @id IS NULL OR id=@id   
17 мар 14, 15:24    [15739032]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
icef1ery
Member

Откуда:
Сообщений: 61
Вроде начало проясняться спасибо всем кто помогал!
17 мар 14, 16:48    [15739851]     Ответить | Цитировать Сообщить модератору
 Re: Sql передача в ''Where'' любого значения int и float  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Не лучше ли избежать сравнения OR?
where id = isnull(@id,id)
17 мар 14, 18:09    [15740461]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить