2

我知道这是一个简单的问题,但它就在这里。我使用 SQL 语句在 Visual Studio 中创建了一个搜索按钮。它适用于名字和姓氏,但我也希望它搜索这样的员工 ID。这是代码:

SELECT ID, fName, lName, Discription, Box 
FROM tb1 
WHERE (fName LIKE '%' + @fName + '%') OR (lName LIKE '%' + @lName + '%') OR (ID LIKE '%' + @ID + '%')

当我测试它时,我得到了错误:

"Conversion failed when converting the varchar value '%' to data type int.
4

3 回答 3

2
ID LIKE '%' + @ID + '%'

ID是整数,'%' + @ID + '%'是字符串。实在没法比。整数要么是值,要么不是。%通配符对整数没有任何意义。

假设您想要做的是将整数转换为字符串,以便您可以匹配它的子字符串。因此,例如,搜索“1”将匹配任何包含“1”的整数(10、11、12、451 等)。为此,您只需将整数值转换为WHERE子句中的字符串值:

(CAST(ID AS varchar(10)) LIKE '%' + @ID + '%'

(这假设您的整数长度永远不会超过 10 个字符。根据需要调整该值。)

于 2012-07-12T18:32:42.887 回答
1

您不能LIKE与整数一起使用,因此您必须IDvarchar.

要转换,您可以使用CAST或:http CONVERT: //msdn.microsoft.com/en-us/library/ms187928.aspx

前任: CAST(ID as varchar)

您的查询:

SELECT ID, fName, lName, Discription, Box 
FROM tb1 
WHERE (fName LIKE '%' + @fName + '%') OR (lName LIKE '%' + @lName + '%') OR (CAST(ID as varchar) LIKE '%' + @ID + '%')
于 2012-07-12T18:30:43.293 回答
1

LIKE语法仅与字符相关的数据类型兼容。INT类型不属于此类别。

参考:http: //msdn.microsoft.com/en-us/library/ms179859.aspx

于 2012-07-12T18:31:22.013 回答