首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle:空字符串和空字符串的区别

Oracle:空字符串和空字符串的区别
EN

Stack Overflow用户
提问于 2016-04-22 14:31:29
回答 1查看 12.1K关注 0票数 1

由于oracle行为,我的查询没有返回任何值。

问题是: the data

这不是Why does Oracle 9i treat an empty string as NULL?的复制,因为在这里我不是问这个问题的原因,我很清楚原因,我要求解决这个问题。

这是我的桌子结构

代码语言:javascript
复制
   CREATE TABLE TEST
    (
      ID          NUMBER not null,
      NAME VARCHAR2(255)
    )

当插入值时,oracle将接受

插入测试值(1,'');

我发现内部oracle将零长度的字符串转换为空并存储

但我的疑问

从测试中选择*,其中名称=输入;(输入=‘’)

(输入是从前端传递的,有时会有空字符串)

不会返回任何结果

由于性能问题,我无法编写动态查询。

以前遇到过这个问题的人请告诉我如何比较空字符串和空

EN

回答 1

Stack Overflow用户

发布于 2016-04-22 14:42:23

问题是,Oracle (默认情况下)将空字符串视为NULL。因此:

代码语言:javascript
复制
where name = ''

与以下相同:

代码语言:javascript
复制
where name = NULL

而且两者都总是失败(因为它们返回NULL)。

你可以用不同的方式解决这个问题。一种方法是:

代码语言:javascript
复制
where (name = INPUT or name is null and INPUT is null)

或者,如果您知道有一个无效的名称:

代码语言:javascript
复制
where coalesce(name, '<invalid>') = coalesce(INPUT, '<invalid>')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36796562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档