'的用法是什么\';和'$';在T-SQL中?
正如我在SQL Server书籍中发现的:'的用法是什么\';和'$';在T-SQL中?,sql,sql-server,tsql,special-characters,Sql,Sql Server,Tsql,Special Characters,正如我在SQL Server书籍中发现的: \(反斜杠)(Transact-SQL) 为了便于阅读,将长字符串常量分成两行或多行 及 选择子句(Transact-SQL)$IDENTITY |$ROWGUID 和 $PARTITION(Transact-SQL) 返回为任何指定分区函数映射一组分区列值的分区号 在T-SQL特别是SQL Server中使用\和$ 现在,我有一个这样的问题: SELECT \ a, $ b, \11 c, $12 d; a | b | c |
\(反斜杠)(Transact-SQL)
为了便于阅读,将长字符串常量分成两行或多行 及
选择子句(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
具有如下有效结果:
SELECT \ a, $ b, \11 c, $12 d;
a | b | c | d
-----+------+-------+-------
0.00 | 0.00 | 11.00 | 12.00
我觉得这个角色有些地方我找不到
编辑:我发现,如果后面有一个数字,SQL Server将删除定义的符号,并将该值存储为货币数据类型: 我认为,SQL Server将单个货币符号转换为
+
和-
-公式中的最后一个短语,仅在部分末尾,如-$
,($)
,(12+$)
,($)+12
,($)+12
,*(12-$)
,等等,而不是$+1
,2*$-1
。我还发现$2
与$2
相同
所有上述行为对于
\
都是相同的,这意味着SQL Server认为\
是一个货币符号 我想检查一下数据类型,每个都返回数据类型money
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
此处反斜杠不是字符串常量的一部分,因此记录的行为不适用。T-SQL解析器并不严格,因此有时允许解释格式错误的文本和语句。当然,依赖这种未记录的行为是脆弱的,因为这种行为可能随时改变并破坏代码。“这意味着SQL Server认为``是一种货币符号!!!”——这可能与历史上,广泛使用的大多数与美国ASCII兼容的日文编码将日元符号放在代码点上,这在美国ASCII中是反斜杠。仍有一些字体将反斜杠表示为日元符号。这可能是OP或任何愿意回答问题的人的起点:@hvd支持您的论点,
$
,\
,€
和
的解析方式似乎相同。