问题描述
嗨,汤姆,
使用Oracle多年后,我偶然发现了一个惊人的语句,SQL和PL/SQL中接受了奇怪的文字,尽管它们的语法不正确。
测试用例在LiveSQL链接中。
我在10.2.0.4和12.1.0.2版本上进行了测试。
你对此有解释吗?
谢谢
使用Oracle多年后,我偶然发现了一个惊人的语句,SQL和PL/SQL中接受了奇怪的文字,尽管它们的语法不正确。
测试用例在LiveSQL链接中。
我在10.2.0.4和12.1.0.2版本上进行了测试。
你对此有解释吗?
谢谢
专家解答
空字符串 ''被Oracle数据库视为null。所以你有:
它被解释为
* 是Oracle数据库中的乘法运算符。所以你所拥有的是空乘以空!(为null)。同样,正斜杠 “/” 是除法运算符。所以
是null除以null。但是 “X” 和空间 “” 不是运算符。他们只是那些角色。这就是为什么:
给出一个错误。您可以在两组两个单引号之间使用任何二进制运算符来获取null:
select ''*'' as C from dual复制
它被解释为
select null * null as C from dual;复制
* 是Oracle数据库中的乘法运算符。所以你所拥有的是空乘以空!(为null)。同样,正斜杠 “/” 是除法运算符。所以
select ''/'' as C from dual复制
是null除以null。但是 “X” 和空间 “” 不是运算符。他们只是那些角色。这就是为什么:
select ''X'' as C from dual复制
给出一个错误。您可以在两组两个单引号之间使用任何二进制运算符来获取null:
set nullselect ''+'' as C from dual; C select ''-'' as C from dual; C 复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
616次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
608次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
502次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
486次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
467次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
445次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
440次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
435次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
425次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
378次阅读
2025-04-17 09:30:30