Ale*_*mov 6 sql t-sql sql-server
在这个答案中,有一个技巧允许ROW_NUMBER()在ORDER BY子句中使用带有"常量" 的窗口函数:
SELECT ROW_NUMBER() OVER (ORDER BY $/0)
FROM master..spt_values
Run Code Online (Sandbox Code Playgroud)
在谷歌进行一些搜索后,我找不到在这种情况下美元符号的含义?
我试过执行一个简单的查询:
SELECT $;
Run Code Online (Sandbox Code Playgroud)
它回来了0.
有人可以解释一下吗?
它只是一个money常量(T-SQL称之为文字).
如果你看到表达式$2.50,你可能不会感到惊讶,这只是另一个常数.
其他一些例子:select £,¢,¤,¥,€所有都返回0.
确定您在T-SQL中查看的数据类型可能很棘手.一个技巧,如果你怀疑你知道它是什么类型是选择不兼容的类型并尝试转换:
select CONVERT(date,$)
Run Code Online (Sandbox Code Playgroud)
结果:
Msg 529, Level 16, State 2, Line 1
Explicit conversion from data type money to date is not allowed.
Run Code Online (Sandbox Code Playgroud)