首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle中的NVL函数未返回任何记录

问oracle中的NVL函数未返回任何记录
EN

Stack Overflow用户
提问于 2019-09-04 05:36:14
回答 1查看 407关注 0票数 0

我正在尝试使用nvl函数获取Oracle数据库中的记录,但没有返回任何记录。USER_ID列中当前没有空值。

查询:

问题1 :Select * from "Schemaname"."tablename" where nvl("USER_ID",'aaa') in('TestUser')

问题2:Select * from "schemaname"."tablename" where USER_ID in('TestUser')

使用NVL函数的查询1不返回任何记录,但查询2返回一条记录。有人能帮我找出查询1没有返回记录的原因吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-04 06:11:09

NVL允许您将查询结果中的null (作为空白返回)替换为字符串。如果expr1为null,则NVL返回expr2。如果expr1不为null,则NVL返回expr1。

更新

@Gordon Linoff是完全正确的,我的第一个建议是错误的-双引号只是DB实体的分界。但是它的价格比大多数人想象的要高。默认情况下,Oracle是不区分大小写的DBMS,但是当您开始使用双引号时,一切都改变了。查询之间唯一可疑的区别是第一个查询的"Schemaname“中有一个大写的"S”。

实际上,我们可以创建任意数量的相似对象,例如脚本

代码语言:javascript
复制
create table "abc_001" (
       user_id varchar2(16)
);

create table "abC_001" (
       user_id varchar2(16)
);

create table "AbC_001" (
       user_id varchar2(16)
);

将会成功完成,而且它涉及到DBMS的所有对象,所以现在我几乎可以肯定这封信中的问题。这些查询在语法上是正确的,但它们是对不同模式的请求。

所以我删除了我第一个答案中不正确的部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57779025

复制
相关文章

相似问题

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