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认为\是一个货币符号!
我想检查数据类型和每个,因为你会注意到每个返回数据类型钱.
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)