这是我面临的一个非常奇怪的问题。当我运行以下查询时:
select p1.*
from art_asset as p0
inner join
(select
t0.art_asset_id as Id, t0.Host,
convert(INT, substring(t0.host, len(rtrim(t0.host)) -1 , 2)) as Number
from art_asset t0
where t0.manufacturer = 'McAfee' and decommissioned = 0) as p1 on p1.Id = p0.art_asset_id
我得到了 3 列,一切看起来都和我猜想的一模一样。我得到一Id
列,一Host
列和一Number
列。
但是,当我将 where 子句添加到此查询的末尾时,如下所示:
select p1.*
from art_asset as p0
inner join
(select
t0.art_asset_id as Id, t0.Host,
convert(INT, substring(t0.host, len(rtrim(t0.host)) -1 , 2)) as Number
from art_asset t0
where t0.manufacturer = 'McAfee' and decommissioned = 0 ) as p1 on p1.id = p0.art_asset_id
where p1.Number <> 1
我收到以下错误!?!
消息 245,级别 16,状态 1,行 1
将 varchar 值“1Z”转换为数据类型 int 时转换失败。
以下是数据示例:
| Id | Host | Number |
----------------------------------------
| 1 | DEVICENAME80 | 80 |
| 2 | DEVICENAME81 | 81 |
| 3 | DEVICENAME60 | 60 |