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我更新了我的答案。 –