13

SQL Server 的 T-SQL 语法似乎允许连续使用多个加号:

SELECT 1 + 2 --3
SELECT 1 ++ 2 --3
SELECT 1 ++++++ 2 --3
SELECT 1 + '2' --3
SELECT 1 ++ '2' --3
SELECT '1' + '2' --'12'
SELECT '1' ++ '2' --'12'

多个加号看起来就像一个加号。为什么存在“乘法运算符” ++?它有什么作用?

4

2 回答 2

18

第一个加号被解释为加法运算符。剩余的每个加号都被解释为一元加号运算符

1 ++ 2   means   1 + (+2)
1 +++ 2  means   1 + (+(+2))

这种一元加号运算符在编程语言中很常见,尽管它在 SQL 中很少使用,因为它实际上并没有做任何事情。

尽管一元加号可以出现在任何数值表达式之前,但它不会对从表达式返回的值执行任何操作。具体来说,它不会返回负表达式的正值。

SQL-92 标准中提到了一元加号运算符。

除了通常的算术运算符,加号、减号、时间、除法、一元加号和一元减号之外,还有以下返回数字的函数: ...

虽然一元加号并不是那么有用,但它有一个更有用的伴侣:一元减号。它也被称为负运算符

SELECT -(expression), ...
--     ^ unary minus
于 2012-05-05T18:38:40.783 回答
3

SELECT 1 ++ 2 表示 1 加 (+2) 表示 3

其他人的逻辑相同1+(+(+2)),依此类推

SELECT '1' + '2' --'12'您正在连接 2 个字符串,字符串 '1' 和字符串 '2',结果为 '12'

于 2012-05-05T18:40:20.417 回答