SQL с необязательными параметрами. Когда параметры заполнены, нам нужно использовать оператор LIKE, в противном случае вернуть все значения - PullRequest
0 голосов
/ 29 октября 2018

У нас есть запрос:

SELECT * 
FROM wo_hdr 
WHERE tm_no LIKE CONCAT('%', $P{tm_no}, '%')

Однако, когда параметр $P{tm_no} равен нулю, нам нужно вернуть все значения.

Я видел, как другие использовали

SELECT * 
FROM wo_hdr 
WHERE tm_no is null or tm_no LIKE CONCAT('%', $P{tm_no}, '%')

Это не работает для нас, потому что тогда, когда мы не хотим возвращать нулевые значения, когда $P{tm_no} не равно нулю.

Кто-нибудь знает хорошее решение для этого? Я подумал, что, возможно, оператор CASE сработает, но его использование в предложении WHERE выглядит странно. Он должен работать как с ORACLE, так и с SQL Server.

Спасибо.

1 Ответ

0 голосов
/ 29 октября 2018

Просто измените ваше предложение where с помощью:

SELECT * 
FROM wo_hdr 
WHERE ($P{tm_no} IS NULL OR tm_no LIKE CONCAT('%', $P{tm_no}, '%'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...