2013-04-30 2 views
0

Я использую SQL-запрос String в Java, где мне нужно условно игнорировать или добавлять предложения AND. Например предположим, ниже запроса,Условно добавить AND условия в Oracle SQL

select t.name from test t where 
t.id=? 
and 
t.name=? 
and 
t.status=? 

так его, как если имя пустое или нуль я хочу, чтобы игнорировать его, и если состояние счетчика тотально я должен выполнить ниже условия t.status = «отмена» и t.status = 'confirm'. Как ниже псевдо запроса, но я думаю, что я могу использовать только условия в хранимых процедурах, а не в обычной строке sql?

select t.name from test t where 
t.id=? 
and 
if(t.name != null){ 
t.name=? 
} 
and 
if(t.status.equals = 'total'){ 
t.status='total' 
}else{ 
t.status = ? 
} 
+0

Связанный: http://stackoverflow.com/a/15122018/1065197. Пример приведен на MySQL, но работает и на любой другой РСУБД. –

ответ

0
May be try this technice 

(:param IS NULL OR <someField> = (other condition) :param) 

You query looks like 

SELECT ... FROM ... 
WHERE 
(:param IS NULL OR <someField> = (other condition) :param) 
AND 
(:param1 IS NULL OR <someField> = (other condition) :param1) 

ДЛЯ ВАС Пример

WHERE t.status = CASE WHEN t.status = 'Total' THEN 'Total' ELSE :param END 
0

Как о чем-то вроде

select t.name from test t where 
t.id=? 
and 
(t.name=? OR t.name IS NULL) 
and 
(
     (t.status=? AND t.statuc <> 'total') 
    OR (t.status = 'total') 
) 
Смежные вопросы