今天我写了一个应该返回错误的查询.相反,它返回值为15的列名why和数据类型money.你知道为什么吗?
select \15why
Run Code Online (Sandbox Code Playgroud)
结果:
why
15.00
Run Code Online (Sandbox Code Playgroud)
货币常数表示为带有可选小数点和可选货币符号作为前缀的数字串
所以select €15导致一个money常数,同样如此select $15,以及select ¥15.
因为日元符号(¥)是货币指示符,并且在某些原生日语字符集中,其代码点与ASCII中反斜杠的代码点相同.
另请参见MSDN:money和smallmoney(Transact-SQL).
所以select \15似乎等于select ¥15.
至于列名:select 5a结果是带有别名的列,a值为5.因为"a"不是数字后缀,所以它被视为select 5 as a,其中"as"是可选的.而是select 5e返回5未命名的列,因为"e" 是数字后缀.
所以你发现了一种不同的写作方式select ¥15 as why.