我有下面的代碼位的SQL查詢的一部分:類型比較在SQL
INSERT INTO [Database]
SELECT DISTINCT @ssId
FROM [Document_Map]
WHERE (LabelId IN (SELECT Tokens
FROM StringSplitter(@sortValue, '|', 1))
的代碼工作正常,只要@SortValue
是一個整數,(LabelId
是一個int以及)或由分隔符分隔的整數(例如,SortValue 420 | 421 |與420和421進行比較)。但是,我添加的功能涉及@sortValue
的非整數值。例如:420|ABC|421|
應該與420,ABC和421比較。
不用擔心,我想。我只是修改該查詢的最後一行!
(LabelId IN (SELECT Tokens FROM StringSplitter(@sortValue, '|', 1)) OR
StringId IN (SELECT Tokens FROM StringSplitter(@sortValue, '|', 1)))
不幸的是,每當我在@sortValue
飼料與它的人物,我得到一個錯誤。它從來沒有達到or
的最遠端。
經過大量的努力,我最終確定SQL正在將StringSplitter函數的字符串結果轉換爲與LabelId進行比較。當字符串結果保證只包含數字字符時沒有問題,但SQL拒絕將非數字字符串轉換爲int,從而拋出錯誤。
什麼是最簡單的方法來解決這個錯誤,同時保持所需的功能?由於數據庫交互,我不確定是否改變LabelId
的類型是一個可行的選擇。
精彩,謝謝! – 2010-07-22 19:15:22