以下查询有效.注意最后一行的’Y’之前.
SELECT * FROM (SELECT 'Y' AS fIEld FROM DUAL UNION ALL SELECT 'X' AS fIEld FROM DUAL) t WHERE t.fIEld = +'Y'
为什么Oracle解析器接受这个?有一秒钟,我认为这是因为旧的外连接语法,但在该语法中,括号括起来.
这也有效:
select +'Y1' from dual;
还有这个:
select 'A' || + 'Y1' from dual;
这有效(oracle将字符串转换为数字):
select -'1' from DUAL;
但不是这个([错误]执行(223:9):ora-01722:无效的数字
):
select -'A' from DUAL;
我想知道为什么可以在varchar2值之前使用它. Arithmetic Operators部分未提及适用于字符串值的特定规则.
解决方法 一元运算符定义为标识请参阅 About SQL Operators中的 Table 4-1 “SQL Operator Precedence”.也:
select + date '2015-01-01' from dual;
January,01 2015 00:00:00
编辑添加.
“身份”是为了回归其论点.有关另一种语言的另一个例子,请参阅Clojure的identity
函数.维基百科有一个“identity function”的页面.
以上是内存溢出为你收集整理的为什么在Oracle中接受字符串值之前的加号()?全部内容,希望文章能够帮你解决为什么在Oracle中接受字符串值之前的加号()?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)