首页 文章

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

提问于
浏览
5

好吧,这可能是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部分未提及适用于字符串值的特定规则 .

1 回答

相关问题