0

Java で文字列 SQL クエリを使用していますが、条件付きで AND 句を無視または追加する必要があります。たとえば、以下のクエリを想定します。

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

そのため、名前が空または null の場合は無視し、カウント ステータスが合計の場合は、条件 t.status= 'cancel' および 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 = ?
}
4

2 に答える 2

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')
)
于 2013-04-30T04:16:37.660 に答える
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)

FOR YOUの例

WHERE t.status = CASE WHEN t.status = 'Total' THEN 'Total' ELSE :param END
于 2013-04-30T04:15:45.340 に答える