2014-03-02 130 views
0

嗨,我有一個表格在我的Java應用程序做高級研究。在那裏有幾個領域,用戶可以填寫他想要的領域,所以爲了在我的數據庫中進行搜索,我很喜歡這樣的東西。如何使用LIKE返回包含空值的所有內容?

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中替換%% by%?%爲我準備好的stattement,所以如果字段爲空,我會替換?通過「」,問題是LIKE %%將返回所有裸空值,並且我插入的OR將使得查詢總是返回空的LANGUE電影,而不是匹配模式。

+0

你應該使用'[like-operator]'標籤而不是''[like]'標籤。 '[like]'標籤應該用於社交網絡的類似功能。 –

+1

所以,如果你想返回除空字符串以外的每個可能的值(包括NULL),那麼不要容易忽略F.LANGUE!='' – BrianC

回答

1

如果你想處理空值,可以使用下面的NVL函數:

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

等其他列。

相關問題