您好我的java应用程序中有一个表单可以进行高级研究。那里有几个字段,用户可以填写他想要的字段,所以为了在他的数据库中进行搜索,我很喜欢这样的事情。
SELECT DISTINCT F.ID_FILM, F.langue FROM FILM F , PAYS PA, FILM_PAYS FPA,
WHERE F.TITRE LIKE '%%'
AND (F.LANGUE IS NULL OR upper(F.LANGUE) LIKE upper('%%'))
AND F.ANNEE LIKE '%%'
AND F.DUREE BETWEEN 0 AND 1000
AND F.SYNOPSIS LIKE '%%'
AND (PA.NOM_PAYS LIKE '%%' AND PA.ID_PAYS = FPA.ID_PAYS AND FPA.ID_FILM = F.ID_FILM)
我会用java替换%%中的%?%作为我准备好的stattement,所以如果field为空我将替换?通过“”,问题是LIKE %%将返回所有裸空值,并且我插入的OR将使查询始终返回空LANGUE影片以及与模式匹配的那个。
答案 0 :(得分:1)
如果您想处理NULLS,可以使用NVL功能,如下所示:
WHERE NVL(F.TITRE, 'NULL') LIKE '%%'
等其他专栏。