MSSQL 存储过程:如果 ISNUMERIC,则将参数与列进行比较
我有下表“Managers”(简化):
ID, int
Name, nvarchar(100)
在具有一个参数(“Search”,类型 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 时转换失败。
我该如何解决这个问题?
预先感
谢拉菲
I have following table "Managers" (simplified):
ID, int
Name, nvarchar(100)
In a stored procedure that has one argument ("Search", type nvarchar), I want to select every row where
- The ID-Column is exactly @Search OR
- The Name-Column contains @Search.
At the moment, my select in the stored procedure looks something like this:
SELECT ID, Name FROM Managers WHERE
(ISNUMERIC(@Search) = 1 AND [ID] = CAST(@Search AS INT)) Or
Contains([Name], @Search)
If I call the stored procedure with @Search = 1321 (example), the select works.
But if I have a @Search - parameter that is not numeric (example "HES"), I get the following error:
Conversion failed when converting the nvarchar value 'HES' to data type int.
How can I fix this?
Thanks in advance
Raphi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)