val*_*lis 3 sql sql-server sql-server-2008
这是令我困惑的事情,但我从来没有找到解释.我在SQL Server 2008数据库中有一个类型的列smallint.我想查找值为NULL空的任何行,所以我这样说:
SELECT *
FROM products
WHERE warranty_dom IS NULL
OR warranty_dom = ''
Run Code Online (Sandbox Code Playgroud)
这将返回值为0的行
那么为什么被0视为相当于''?
Dan*_*Dan 12
0不被视为''本身.相反,''被隐式地转换为整数,并且该转换使其为0.
亲自尝试一下:
SELECT CAST(0 AS varchar) -- Output: '0'
SELECT CAST('' AS smallint) -- Output: 0
Run Code Online (Sandbox Code Playgroud)
另外,如其他地方所述:如果warranty_dom的类型为smallint,那么它首先不可能是空白的.
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |