如何使用LIKE返回所有内容,包括oracle中的空值?

时间:2014-03-02 01:02:56

标签: java oracle jdbc sql-like

您好我的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影片以及与模式匹配的那个。

1 个答案:

答案 0 :(得分:1)

如果您想处理NULLS,可以使用NVL功能,如下所示:

WHERE NVL(F.TITRE, 'NULL') LIKE '%%'

等其他专栏。