我創建了一個名爲vReceivedEmail的視圖,其中包含一個名爲的Varchar列RowPrimaryKeyValue。此列通常存儲主鍵ID值,例如567781
,但每隔一段時間都有描述性文本「Ad hoc消息」。將列var上的varchar轉換爲int列轉換爲int
我已將視圖設置爲僅顯示可保存主鍵值的記錄,然後將該列作爲int
。
SELECT CAST(Email.RowPrimaryKeyValue as int) as DetailID
FROM MessageStore.dbo.Email Email
WHERE ISNUMERIC(Email.RowPrimaryKeyValue) = 1
當我測試的看法,我只得到記錄,與我想象中的主鍵值,當我看着列清單在對象資源管理器視圖,列被保存在int
數據類型。
我然後試圖應用以下WHERE
子句中一個單獨的查詢,引用我保存的視圖:
SELECT PotAcc.DetailID
FROM PotentialAccounts PotAcc
WHERE PotAcc.DetailID NOT IN (
SELECT RecEmail.DetailID
FROM vReceivedEmail RecEmail
)
...但我返回了以下錯誤:
Conversion failed when converting the varchar value 'Ad hoc message' to data type int.
'Ad hoc消息'是來自我過濾並轉換爲int的列的數據,但我不知道它是如何管理的,因爲視圖顯式地過濾掉並將列轉換爲int。
不錯。之前沒有使用'try_convert',所以今天學到了一些新東西。非常感謝。 –
很好的版本 – scsimon