我想减少我的SQL where
语句的大小,以消除多余的条款“删除union
声明条件WHERE语句和比较操作
我的说法是这样的:
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语句也很长并且很复杂
所以我试图在where语句重新写这样的事:
SELECT
col1, col2, col3...etc
FROM
someTabe
WHERE
CASE WHEN :sType = 1 then col1= :param ELSE col1 like '%'||:param||'%' END
但这无法运行,它的case语句后,需要一个操作符如this question
那么,有一种语法可以实现上述说法中的想法?
你就不能使用OR:为前:WHERE(COL1 =:PARAM和:S型= 1)或(COL1 LIKE“%PARAM% '和sType = 2)... ?? – Zeina
@Zeina,我真的不知道为什么我没有想到OR语句,我通常倾向于避免OR,并且我过度的解决了这个问题,我认为我值得投票xD – simsim