내가 중복 조항을 제거하기 위해 내 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
하지만이 실행되지 : 3,516,
그래서 나는 이런 식으로 뭔가에 어디 문을 다시 쓰기 위해 노력했다 위의 성명에서 아이디어를 얻을 수있는 구문이 있습니까?
은 그냥 사용 또는 수 없습니다 : (COL1 = : PARAM과 : STYPE = 1) 또는 (COL1 LIKE '% PARAM % 전을 위해 '및 sType = 2) ... ?? – Zeina
@Zeina, 나는 솔직히 왜 내가 OR 문을 생각하지 않았는지 모르겠다. 나는 보통 OR을 피하는 경향이있다. 그리고 나는 해결책을 너무 많이 생각했다. 나는 투표를 할 자격이 있다고 생각한다. – simsim