' \'的用法是什么?和' $'在T-SQL?

时间:2015-05-17 13:29:28

标签: sql sql-server tsql special-characters

正如我发现的那样(在SQL Server书籍中):

  

\ (Backslash) (Transact-SQL)
  为了便于阅读,将长字符串常量分成两行或多行。

  

SELECT Clause (Transact-SQL) ... $IDENTITY | $ROWGUID
  和
  的 $PARTITION (Transact-SQL)
  返回将为任何指定的分区函数映射一组分区列值的分区号。

在T-SQL特别是SQL Server中使用\$

现在,我有一个这样的查询:

SELECT \ a, $ b, \11 c, $12 d;

这样的结果有效:

a    | b    | c     | d 
-----+------+-------+-------
0.00 | 0.00 | 11.00 | 12.00

我认为我无法找到关于这些角色的东西。

编辑:
我发现如果一个数字出现在currency symbols之后,SQL Server将删除定义的符号并将该值存储为货币数据类型:

我认为,SQL Server将单个货币符号翻译为部分中的最后一个短语 - 这些部分位于+-之间 - 公式为0.00且仅在部分的结尾如-$($)(12 + $)($) + 12$ * (12 - $)等,而不是$ + 1,{{1 }}。我还发现2 * $ - 1$ 2相同。

$2的所有上述行为都相同,这意味着SQL Server认为\是货币符号!!!

1 个答案:

答案 0 :(得分:7)

我想检查一下数据类型,你会发现每个都返回数据类型钱。

WITH CTE
AS
(
    SELECT \ a, $ b, \11 c, $12 d   
)

SELECT  SQL_VARIANT_PROPERTY(a,'baseType') a,
        SQL_VARIANT_PROPERTY(b,'baseType') b,
        SQL_VARIANT_PROPERTY(c,'baseType') c,
        SQL_VARIANT_PROPERTY(d,'baseType') d
FROM CTE

结果:

a                              b                              c                              d
------------------------------ ------------------------------ ------------------------------ ------------------------------
money                          money                          money                          money