Я пытаюсь уменьшить размер моего SQL where
заявление, чтобы устранить избыточные положения «удалить union
заявленияУсловный где оператор и оператор сравнения
Мое заявление, как это:.
SELECT
col1, col2, col3...etc
FROM
someTabe
WHERE
col1 = :param
and :sType = 1
UNION
SELECT
col1, col2, col3...etc
FROM
someTabe
WHERE
col1 like '%'||:param||'%'
and :sType = 2
Проблема с этим утверждением заключается в том, что для каждой возможности :sType
я должен написать инструкцию select и объединить все возможности, и в моем случае мои SQL-запросы очень длинные и сложные даже без объединения
Так что я попытался переписать где о чем-то вроде этого:
SELECT
col1, col2, col3...etc
FROM
someTabe
WHERE
CASE WHEN :sType = 1 then col1= :param ELSE col1 like '%'||:param||'%' END
Но это не удается бежать, ему нужен оператор после сазе, как в this question
Итак, есть синтаксис, который может достичь идеи в приведенном выше утверждении?
вы не можете просто использовать OR: напр: WHERE (col1 =: пары и: Stype = 1) ИЛИ (col1 как «% пары% 'и sType = 2) ... ?? – Zeina
@ Zeina, я честно не знаю, почему я не думал об OR-заявлении, я обычно стараюсь избегать OR, и я переусердствовал над решением, я думаю, что заслуживаю проголосовать xD – simsim