Hus*_*wzy 27 sql sql-server select
我在SQL Server方面有很好的经验,但突然间我发现了这个奇怪的SELECT命令
SELECT $
Run Code Online (Sandbox Code Playgroud)
要么
SELECT $ FROM tableName
Run Code Online (Sandbox Code Playgroud)
它一直返回零标量值(0.00),或者所有值都为的新列0.00
那是什么?
Ice*_*ind 24
当SQL Server遇到您的$标志时,它会自动将其转换为money数据类型.因为您在美元符号后没有显式值,所以SQL Server假设0.00.来自MSDN:
当转换为
money或时smallmoney,整数被假定为货币单位.例如,整数值4将转换为相当于4美元的货币(对于us_english,默认语言).浮点值小数点右边的数字四舍五入到货币值的四位小数.正在转换为整数数据类型的数据类型char或varchar的表达式必须仅包含数字和可选的加号或减号(+或 - ).领先的空白被忽略了.转换为货币的数据类型char或varchar的表达式还可以包括可选的小数点和前导美元符号($).
Ale*_*ec. 12
经过一番混乱后,我发现无论使用什么货币符号都会发生这种情况,SQL服务器暗示该字段是货币字段.
如果您在货币符号后添加数字,在这种情况下为1美元:
SELECT $4
Run Code Online (Sandbox Code Playgroud)
SQL服务器将返回4.00
因此,SQL Server正在使用$并假设我们要创建一个具有MONEY数据类型的字段,并且因为我们没有在货币符号后输入值,SQL Server假定值为0,但在我看来这应该返回空值.
| 归档时间: |
|
| 查看次数: |
19684 次 |
| 最近记录: |