设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 服务 专业 百度
当前位置: 首页 > 站长百科 > 正文

为什么在Oracle中接受字符串值之前的加号()?

发布时间:2021-05-16 02:09 所属栏目:[站长百科] 来源:网络整理
导读:好吧,这可能是Oracle解析器的一个怪癖. 以下查询有效.注意最后一行的’Y’之前. SELECT * FROM (SELECT 'Y' AS field FROM DUAL UNION ALL SELECT 'X' AS field FROM DUAL) t WHERE t.field = +'Y' 为什么Oracle解析器接受这个?有一秒钟,我认为这是因为旧

好吧,这可能是Oracle解析器的一个怪癖.

以下查询有效.注意最后一行的’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”的页面.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读