私は「冗長な条項をなくすunion
文を削除するには、私のSQL 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文とunionをすべて記述しなければならず、私の場合はSQL文が非常に長く複雑で、組合がなくても複雑です
に、あるようcase文の後にオペレータを必要とし、
SELECT
col1, col2, col3...etc
FROM
someTabe
WHERE
CASE WHEN :sType = 1 then col1= :param ELSE col1 like '%'||:param||'%' END
しかし、これは実行に失敗します。
は、だから私はこのような何かにどこ文を再書き込みしようとしています上記の声明でそのアイデアを達成できる構文がありますか?
は、あなただけの使用ORすることはできません:(COL1 =::PARAMと:STYPE = 1)OR(COL1 LIKE「%のparam%EXのために'とsType = 2)...? – Zeina
@Zeina、私は正直なところ、なぜ私はORの声明を考えなかったのかわからない、私は通常ORを避ける傾向があり、私は解決策を思い知らされていた、私は下の投票に値すると思うxD – simsim