Есть ли в mySql специальный символ, который всегда возвращает true в предложениях WHERE? - PullRequest
0 голосов
/ 19 марта 2012

Есть ли символ, скажем, $,

SELECT * FROM Persons WHERE firstName='Peter' AND areaCode=$;

, такой, чтобы оператор возвращал то же самое, что и

SELECT * FROM Persons WHERE firstName='Peter'

, то есть areaCode=$ всегда возвращал бы всегда true и,таким образом, фактически «поворачивает» критерии areaCode = ...

Я пишу код VBA в Excel, который выбирает несколько строк на основе ряда критериев.Критерии могут быть включены или отключены.Такой символ, как $, сделает отключение намного проще.

Ответы [ 5 ]

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

вместо того, чтобы отключить его, передайте его на ваш запрос как NULL и используйте COALESCE:

SELECT * 
FROM Persons 
WHERE firstName='Peter' 
AND areaCode = COALESCE(<your parameter>, areaCode);
0 голосов
/ 19 марта 2012

Исходя из вашего вопроса, я предполагаю, что вы на самом деле хотите, чтобы включал или , исключал предложение where, и в этом случае вам нужно использовать or.

SELECT * 
  FROM Persons 
 WHERE ( 1 = 2
         OR ( firstName = 'Peter' 
              AND < more conditions if needed >
                  )
        )

В этом примере 1 <> 2, поэтому единственным оцениваемым условием является firstName = 'Peter'. Если затем вы хотите проигнорировать предложение where, измените 2 на 1. Поскольку 1 = 1, оно оценивается для каждой строки, а остальные условия будут игнорироваться.

0 голосов
/ 19 марта 2012

Я думаю, вы могли бы использовать что-то вроде

SELECT * FROM Persons WHERE firstName=firstName

конечно без кавычек

0 голосов
/ 19 марта 2012

Вы можете использовать NULL для этой цели:

 AND (areaCode = ? OR ? IS NULL)
0 голосов
/ 19 марта 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...