これは私が直面している非常に奇妙な問題です。次のクエリを実行すると:
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 |