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

shA*_*A.t 6 sql t-sql sql-server 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;
Run Code Online (Sandbox Code Playgroud)

这有一个有效的结果:

a    | b    | c     | d 
-----+------+-------+-------
0.00 | 0.00 | 11.00 | 12.00
Run Code Online (Sandbox Code Playgroud)

我觉得有些东西我找不到这个角色.

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

我认为,SQL Server中的单一货币符号,它是一个部分-这些部件之间的最后一句翻译+--公式来0.00,只有在喜欢的部分结束-$,($),(12 + $),($) + 12,$ * (12 - $)或等等,而不是$ + 1,2 * $ - 1.我发现$ 2也是一样的$2.

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

Ste*_*han 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
Run Code Online (Sandbox Code Playgroud)

结果:

a                              b                              c                              d
------------------------------ ------------------------------ ------------------------------ ------------------------------
money                          money                          money                          money
Run Code Online (Sandbox Code Playgroud)