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

标签 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 中将 %% 替换为 %?% 作为我准备好的语句,所以如果字段为空,我将替换 ?通过“”,问题是 LIKE %% 将返回所有裸露的空值,而我插入的 OR 将使查询除了与模式匹配的电影之外始终返回空 LANGUE 电影。

最佳答案

如果你想处理NULL,你可以使用NVL函数,如下所示:

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

其他列依此类推。

关于java - 如何使用 LIKE 返回所有内容,包括 Oracle 中的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122567/

相关文章:

java - 如何在相机捕获的图像上叠加图像或 View

java - 尝试设置旧版 Java Spring 启动应用程序时出现导入 com.fasterxml.jackson 无法解析错误

sql - 计算 CASE 子句中的条件

java - 如何中止正在运行的 JDBC 事务?

java - 不同帧率游戏版本中LibGDX的差异

java - 字体会影响TextView的高度吗?

oracle - oracle 如何在内部存储带时区的时间戳

mysql - 更改 SSIS 中的日期格式

java - 大约 10-20 分钟不活动后,与 mysql 服务器的 JDBC 连接失败

java - 将 SQL 结果相互链接