【发布时间】:2016-08-16 05:54:34
【问题描述】:
由于 oracle 的行为,我的查询没有返回任何值。
问题是这样的:Oracle considers EMPTY STRING as NULL when INSERTING DATA but not when SELECTING BACK the data。
这不是Why does Oracle 9i treat an empty string as NULL? 的重复,因为在这里我不是在问这个问题的原因,我很清楚原因,我在问这个问题的解决方案。
这是我的表结构
CREATE TABLE TEST
(
ID NUMBER not null,
NAME VARCHAR2(255)
)
当插入值时,oracle 将接受
插入测试值(1,'');
我发现 oracle 在内部将 长度为零的字符串转换为 NULL 并存储
但是我的查询
从测试中选择 * WHERE NAME = INPUT;(INPUT='')
(输入从前端传递,有时会有空字符串)
不会返回任何结果
由于性能问题,我无法编写动态查询
之前遇到过这个问题的人请告诉我如何比较 EMPTY STRING 和 NULL
【问题讨论】:
-
@vkp 我不是在问原因。我要求解决这个问题。所以这不是重复的。在问这个问题之前,我已经解决了这个问题。
-
只是为了支持 OP 的反对意见:我看不出他/她的问题怎么可能与“为什么...”重复(尽管我毫不怀疑它是重复的东西;以前肯定有人问过这个问题,也许它只是没有出现在快速搜索中。)
-
例如,stackoverflow.com/questions/13411819/… 的副本以及该线程中链接的其他问题。