2016-07-25 2 views
0

주어진 매개 변수가있는 경우 MySQL 문 검사를 실행하는 방법을 찾고 있습니다. 내가 기억하는 바로는이를 달성하기 위해 오라클에서 다음을 할 수 있습니다.매개 변수가 null 인 경우 MySQL 구문 검사

select s.* from Site s 
where s.study = :study 
and (:enabled is null or s.enabled = :enabled) 

역시 MySQL에서 가능한 모든 기능을 제공합니까? 동일한 코드가 오류없이 실행되지만 레코드를 반환하지 않습니다.

내 목표는 내 Java 코드에서 여러 개의 lfs 및 elses를 피하는 것입니다.

select s.* from Site s 
where s.study = :study 

과 같은 매개 변수가 null가 아닌 경우 : enabled 매개 변수가 null 때 쿼리가 보이는 방식을 작동해야

select s.* from Site s 
where s.study = :study 
and s.enabled = :enabled 

나는 하나에 그렇게 할 불행하게도 그것이 다에 크게 의존

SELECT s.* from Site s 
WHERE s.study = "some_study" 
AND (s.enabled IS NULL OR s.enabled = '' OR s.enabled = "enabled"); 
+0

'AND (s.enabled IS NULL 또는 s.enabled = : enabled) ' –

+0

': enabled is null'은 무의미합니다. DB를 사용하지 않고 클라이언트 측 코드에서이를 쉽게 확인할 수 있습니다. ': enabled' 값은 당신이 공급하는 값입니다. 당신은's.enabled'를 테스트 할 필요가 있다는 것을 의미하는 null 필드에 있는지 확인하고 싶습니다. –

+0

모든 가능한 경우에 대해 단 하나의 쿼리 만 있다고 상상해보십시오. 아니야, elses. 아주 유용합니다. 목표는 매개 변수를 확인하고 매개 변수가 실제로 null 인 경우 해당 쿼리의 전체 행을 비활성화하는 것입니다. – smoczyna

답변

0

나는이 당신이 요구하는 것을 믿습니다 tabase 드라이버. 내 초기 쿼리는 데이터베이스 도구에서 실행될 때 작동하지만 JPA가 실행할 때가 아닙니다. 그래서 나는 더 이상 대답 할 필요가 없으므로이 질문을 마무리 할 것입니다. 시간 낭비를해서 미안 해요.

+0

그게 아니라면, 내 목표는 매개 변수가 아니라 열이 있는지 확인하는 것입니다. 그것은 여러 자바 코드에서 if와 else를 피하는 것입니다. Oracle에서는이 작업을 수행 할 수 있으며이 값의 존재 여부에 상관하지 않습니다. 효과적으로 paramtere가 null이므로 쿼리에 영향을 미치지 않으면 SQL 구문 분석기가 줄을 무시합니다 – smoczyna

+0

@smoczyna, 아마도 [this] (http://stackoverflow.com/questions/9855331/check-if-a-parameter-is-null) - 또는 - 저장 프로 시저에서 비어 있음) 더 필요한 무엇입니까? – BrandonM

관련 문제