【发布时间】:2011-08-18 08:56:49
【问题描述】:
我有下表“经理”(简化):
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 时转换失败。
我该如何解决这个问题?
提前致谢
拉斐
【问题讨论】:
标签: sql-server casting compare isnumeric