由于oracle行为,我的查询没有返回任何值。
问题是: 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将零长度的字符串转换为空并存储
但我的疑问
从测试中选择*,其中名称=输入;(输入=‘’)
(输入是从前端传递的,有时会有空字符串)
不会返回任何结果
由于性能问题,我无法编写动态查询。
以前遇到过这个问题的人请告诉我如何比较空字符串和空。
发布于 2016-04-22 14:42:23
问题是,Oracle (默认情况下)将空字符串视为NULL。因此:
where name = ''与以下相同:
where name = NULL而且两者都总是失败(因为它们返回NULL)。
你可以用不同的方式解决这个问题。一种方法是:
where (name = INPUT or name is null and INPUT is null)或者,如果您知道有一个无效的名称:
where coalesce(name, '<invalid>') = coalesce(INPUT, '<invalid>')https://stackoverflow.com/questions/36796562
复制相似问题