正如我发现的那样(在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认为\
是货币符号!!!
答案 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