【问题标题】:SQL Server: What does 1 ++ 2 mean?SQL Server:1 ++ 2 是什么意思?
【发布时间】:2012-05-05 18:37:03
【问题描述】:

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'

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

【问题讨论】:

标签: sql-server tsql syntax


【解决方案1】:

第一个加号被解释为加法运算符。剩余的每个加号都被解释为unary plus operator:

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

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

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

一元加号运算符在 SQL-92 标准中有所提及。

除了通常的算术运算符,加、减、次、除、一元加和一元减,还有以下返回数字的函数:...

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

SELECT -(expression), ...
--     ^ unary minus

【讨论】:

  • 似乎Last(最右边的)加号被解释为加法,而所有其他符号都被解释为一元运算符。 SELECT 5 - - + 1 计算结果为 6
  • @KhalidAmin 不,这将被解释为 5 - (-(+1)),这也是 6。二进制 + 是左关联的。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-15
    • 2010-09-27
    • 2010-10-23
    • 2016-08-18
    • 2014-04-08
    • 2011-04-12
    相关资源
    最近更新 更多