我想減少我的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