我知道这是一个简单的问题,但在这里。我使用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.
答案 0 :(得分:2)
ID LIKE '%' + @ID + '%'
ID
是一个整数,'%' + @ID + '%'
是一个字符串。它无法真正比较。整数既可以是值,也可以不是。 %
通配符对整数没有任何意义。
我假设你要做的是将整数转换为字符串,以便你可以匹配它的子串。因此,例如,搜索“1”将匹配包含 a“1”(10,11,12,451等)的任何整数。要做到这一点,您只需要WHERE
子句中的convert the integer value to a string value:
(CAST(ID AS varchar(10)) LIKE '%' + @ID + '%'
(这假设你的整数永远不会超过10个字符。根据需要调整该值。)
答案 1 :(得分:1)
您不能将LIKE
与整数一起使用,因此您必须将ID
转换为varchar
。
要转换,您可以使用CAST
或CONVERT
:
http://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 + '%')
答案 2 :(得分:1)
LIKE
语法仅与字符相关的数据类型兼容。 INT
类型不属于此类别。