Oracle: сопоставить выражение и, если выражение равно нулю, вернуть все записи в этом столбце - PullRequest
1 голос
/ 30 января 2012

У меня есть форма поиска, где пользователь может искать определенные поля в базе данных.если поле оставлено пустым, оно может соответствовать чему угодно, включая ноль.Если что-то введено в поле, оно должно соответствовать этому полю, включая подстановочные знаки.

Я использую php в качестве языка на стороне сервера.

Проблема в том, что поле поиска пустоеЯ не могу просто использовать php и конвертировать его в '%', так как он не будет соответствовать нулю.(при условии, что предложение where является fieldA как $ value).Также я не могу использовать «fieldA like $ value ИЛИ fieldA IS NULL», потому что тогда он вернет все совпадающие поля и поля, которые являются нулевыми.

Есть (довольно простой) способ для этого в SQLУтверждение?В настоящее время я строю предложение where в PHP, и оно довольно громоздко.

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Вы пытаетесь решить, проверяет ли неправильный элемент на обнуляемость.

Вам нужна запись, чтобы всегда выдавать TRUE, если параметр равен NULL, или TRUE, если поле соответствует параметру ...

WHERE
  fieldA LIKE $value
  OR $value IS NULL
0 голосов
/ 30 января 2012

если поле оставить пустым, оно может соответствовать чему угодно, включая ноль

Ну, а почему бы просто не пропустить фразу where в этом случае?

case 1: user enters "ABC"

select * from my_table where fieldA like 'ABC%';

case 2: user leaves blank

select * from my_table;

Кстати, будьте осторожны с SQL-инъекцией.

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