为什么在Oracle中接受字符串值之前的加号()?
发布时间:2021-03-07 01:44:11 所属栏目:站长百科 来源:网络整理
导读:好吧,这可能是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;
编辑添加. “身份”是为了回归其论点.有关另一种语言的另一个例子,请参阅Clojure的 (编辑:阜新站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |