我目前有一個表,其列爲varchar
。此欄可以保存數字或文字。在某些查詢我把它當作一個bigint
列轉換數據類型時出錯varchar
只要有唯一編號,在此領域沒有任何麻煩,但一分鐘甚至一列(它在別的表是bigint
列之間我做一個連接)有這個字段中的文本和數字我得到了一個「錯誤轉換數據類型varchar
到bigint
」。錯誤,即使在WHERE部分我確保沒有任何文本字段出現。
爲了解決這個問題,我創建一個視圖如下:
SELECT TOP (100) PERCENT ID, CAST(MyCol AS bigint) AS MyCol
FROM MyTable
WHERE (isnumeric(MyCol) = 1)
但即使視圖只顯示與數值的行蒙上Mycol爲bigint我還得到一個錯誤轉換數據類型爲varchar爲bigint運行下面的查詢時:
SELECT * FROM MyView where mycol=1
對視圖做查詢時它不應該知道是怎麼回事就可以了後面!它應該只是看到兩個bigint領域! (see attached image,即使mssql管理工作室顯示視圖字段爲bigint)
我個人認爲你正在解決錯誤的問題。如果您爲了兩個不同的目的而使用一列,那麼您的架構/數據庫設計會出現問題。 – 2009-08-06 11:13:13
是的,我知道,但整個系統現在已經太重要了 – adinas 2009-08-06 13:24:44