Как создать динамический запрос Mysql с условиями - PullRequest
0 голосов
/ 02 октября 2018

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

Это не рабочий оператор запроса, но он описывает мои текущие условия.

SELECT * FROM myTemp WHERE name="Jin" if (
(name is null AND type = 0 ANd status = 2) OR (name is NOT NULL AND 
type = 0 AND status =2 ) );

предположим, чтозначение "name" является динамическим значением, и если имя не пустое (не нулевое), тогда выполните запрос со значением имени, таким как

SELECT * FROM myTemp Where type = 0 AND status = 2 AND name ="someValue"

, в противном случае, если имя пустое или пустое, затем выполните запрос беззначение имени, такое как,

SELECT * FROM myTemp where type = 0 AND status = 2.

Как сделать оператор запроса MySQL с вышеуказанными условиями?

Ответы [ 2 ]

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

Попробуйте что-то вроде этого:

SELECT *
FROM myTemp
WHERE type = 0 AND status = 2 AND (name = "someValue" OR name IS NULL)
0 голосов
/ 02 октября 2018

Вы можете использовать функцию COALESCE, чтобы выбрать первое ненулевое значение.Например:

SELECT * FROM myTemp Where type = 0 AND status = 2 AND name = COALESCE("someValue", name)

Таким образом, если вы укажете «someValue», оно будет соответствовать имени.Если вместо «someValue» указать NULL, оно будет соответствовать имени, которое всегда равно.

...