我有一張表,其中包含兩個我關心的char列,name
和value
。第二列只有兩種類型的字符串,形式爲'######'
,形式爲'#####/#####'
。顯然,如果不是第二種數據類型,第二列應該是一個int。SQL Server選擇在表格變量上的表現與實際表格不同
根據評論,這裏是一個示例表。
[name] [value] ABC1 25 ABC2 13/45 ABC3 12/6 ABC4 15 ABC5 89 XYZ1 89 XYZ2 14 XYZ3 52 XYZ4 13 XYZ5 11
我需要從它的name
包含'XY'
其value
小於50
表中刪除所有行。爲了確定我需要刪除這行,我可以運行
SELECT * FROM table WHERE name LIKE 'XY%' AND CONVERT(int,value)<50
返回
[name] [value] XYZ2 14 XYZ4 13 XYZ5 11
然而,我過於謹慎,並傾向於在可變第一,確保一個表執行刪除操作我沒有忽略任何東西。如果我首先將表中的所有數據插入到@TempTable
中,並且運行類似select語句,則查詢在value = '13/45
的行上失敗。 Conversion failed when converting the varchar value '13/45' to data type int.
是否有一些表變量會導致SQL Server查詢它與標準表不同?
樣本數據...預期輸出......你當前的查詢......任何錯誤,將有助於 – scsimon
試圖把提交您插入的數據不是Temptable –
@MohamedFadhl表變量不使用交易之後。談到這一點,OP-你的問題是什麼?它依賴於交易嗎? – zambonee