В SQL есть что-то вроде: WHERE x = ANY_VALUE? - PullRequest
1 голос
/ 21 марта 2012

В запросе SQL, подобном следующему:

SELECT *
FROM MyTable
WHERE x = 5;

возможно ли изменить условие WHERE так, чтобы SELECT просматривал каждое значение x?Что-то вроде (неправильный синтаксис):

SELECT *
FROM MyTable
WHERE x = ANY_VALUE;

Причина этого вопроса заключается в том, что мне приходится анализировать и изменять некоторые SQL-запросы через некоторый код C ++, который я пишу.Я знаю, что в этом случае я мог бы просто удалить или прокомментировать все условие WHERE, но это упрощение.

Спасибо.

Ответы [ 5 ]

2 голосов
/ 21 марта 2012

Вы можете просто пропустить предложение WHERE.:)

2 голосов
/ 21 марта 2012

Вы можете попробовать это:

SELECT * 
FROM MyTable 
WHERE x = x OR x IS NULL; 
2 голосов
/ 21 марта 2012

Хотя я думаю, что это действительно неправильный путь (просто приложите усилие, чтобы удалить Где), как насчет того, где х = х?Он не будет работать, если X равен нулю (вам нужно использовать «x равно нулю или x = x»), но не беспокойтесь, если вы знаете, что x не будет нулевым.

2 голосов
/ 21 марта 2012

В подобных случаях вы обычно делаете что-то вроде этого:

SELECT *
FROM MyTable
WHERE x = SOME_VALUE OR 1 = 1;

SOME_VALUE произвольно, это может быть что угодно, совпадающее с типом столбца, потому что предложение WHERE всегда будет истинным из-за второй части.

1 голос
/ 21 марта 2012

Вы можете сделать свой запрос следующим образом

DECLARE @VALUE as (type of x)
--SET @VALUE = ''
SELECT * 
FROM MyTable 
WHERE (@VALUE IS NULL OR x = @VALUE);

, и ваш анализ должен будет заменить только строку: --SET @VALUE = '' на значение, которое вы хотите, минус комментарий, как: SET @VALUE = 'abc'

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...