0
我有以下表「經理」(簡體):MSSQL存儲過程:用列比較參數,如果ISNUMERIC
ID, int
Name, nvarchar(100)
在有一個參數(「搜索」,類型爲nvarchar)的存儲過程,我想選擇所有行上
- 通過ID列是完全@Search OR
- 的名稱,列包含@Search。
此刻,我在存儲過程中選擇看起來是這樣的:
SELECT ID, Name FROM Managers WHERE
(ISNUMERIC(@Search) = 1 AND [ID] = CAST(@Search AS INT)) Or
Contains([Name], @Search)
如果我調用存儲過程與@Search = 1321(例如),選擇的作品。
但是,如果我有一個@Search參數不是數字(例如「HES」),我得到以下錯誤: 將nvarchar值'HES'轉換爲數據類型int時轉換失敗。
我該如何解決這個問題?
在此先感謝
Raphi
謝謝你,就像一個魅力! :) –
某些東西不起作用:如果參數是十進制值「132.4」,ISNUMERIC返回1,但CAST到INT失敗。 –
@raphael我更新了我的答案。 –