TableA
OFIPS int null,
DFIPS int null
Run Code Online (Sandbox Code Playgroud)
下面的查询返回一条记录。
SELECT OFIPS from TableA Where OFIPS = 01077
Run Code Online (Sandbox Code Playgroud)
但是这个查询没有。
SELECT OFIPS from TableA Where CAST(OFIPS as nvarchar(5)) = '01077'
Run Code Online (Sandbox Code Playgroud)
不确定是什么问题。请帮忙。
因为在int列前导零将被忽略,01077将1077在您查询时存储
Where OFIPS = 01077
Run Code Online (Sandbox Code Playgroud)
它将被解析为
Where OFIPS = 1077
Run Code Online (Sandbox Code Playgroud)
将存储一条记录,1077以便您获得结果。
但是当你查询时
Where CAST(OFIPS as nvarchar(5)) = '01077'
Run Code Online (Sandbox Code Playgroud)
它检查记录,01077这就是为什么您在第二次查询中没有得到结果
有趣的是,如果您再次删除CASTinWhere子句,它将起作用。即使您以字符串格式查询前导零。
Where OFIPS = '01077'
Run Code Online (Sandbox Code Playgroud)
因为LHSOFIPS具有INT数据类型具有比RHS更高precedense Varchar。RHS( 01077)中的隐式字符串将被转换为 int1077
| 归档时间: |
|
| 查看次数: |
13058 次 |
| 最近记录: |