'LIKE' 在代码的 SQL 语句中不起作用,但在 SSMS 中
'LIKE' not working in SQL statement in code, but is in SSMS
我有一个搜索框,可以按客户 ID、他们的全名或部分姓名进行搜索。我正在使用 'LIKE' 使用他们姓名的一部分进行搜索。
我可以通过 customerID 或全名搜索没问题,但如果我输入 Sam
,则不会出现 Samuel
的记录。
我在代码中的 SQL 语句中执行以下操作,但在搜索名称的一部分时没有得到任何记录。
string sql = "SELECT * FROM customers WHERE firstName LIKE '%@name%' OR lastName LIKE '%@name%' OR (firstName + ' ' + lastName)=@name OR customerID=@id ORDER BY customerID desc";
SqlParameter[] spParameter = new SqlParameter[2];
spParameter[0] = new SqlParameter("@id", (int.TryParse(searchTb.Text, out int i) ? i : 0));
spParameter[1] = new SqlParameter("@name", searchTb.Text);
我将此查询放入 SSMS
SELECT *
FROM customers
WHERE firstName LIKE '%Sam%'
OR lastName LIKE '%lap%'
OR (firstName + ' ' + lastName) = 'Bob Tom'
OR customerID = 1
当我点击执行时,它显示了我的预期输出。我得到所有名字包含 sam
、姓氏包含 lap
等的记录
我应该在代码方面做些什么来修复我的输出,我是否正确地使用了我的参数?
这里的问题是参数替换。尝试像对待字符串常量一样对待该值:
WHERE firstName LIKE '%' + @name + '%'
注意:没有单引号。
或者,也可以将通配符放入应用程序中:
WHERE firstName LIKE @name
我有一个搜索框,可以按客户 ID、他们的全名或部分姓名进行搜索。我正在使用 'LIKE' 使用他们姓名的一部分进行搜索。
我可以通过 customerID 或全名搜索没问题,但如果我输入 Sam
,则不会出现 Samuel
的记录。
我在代码中的 SQL 语句中执行以下操作,但在搜索名称的一部分时没有得到任何记录。
string sql = "SELECT * FROM customers WHERE firstName LIKE '%@name%' OR lastName LIKE '%@name%' OR (firstName + ' ' + lastName)=@name OR customerID=@id ORDER BY customerID desc";
SqlParameter[] spParameter = new SqlParameter[2];
spParameter[0] = new SqlParameter("@id", (int.TryParse(searchTb.Text, out int i) ? i : 0));
spParameter[1] = new SqlParameter("@name", searchTb.Text);
我将此查询放入 SSMS
SELECT *
FROM customers
WHERE firstName LIKE '%Sam%'
OR lastName LIKE '%lap%'
OR (firstName + ' ' + lastName) = 'Bob Tom'
OR customerID = 1
当我点击执行时,它显示了我的预期输出。我得到所有名字包含 sam
、姓氏包含 lap
等的记录
我应该在代码方面做些什么来修复我的输出,我是否正确地使用了我的参数?
这里的问题是参数替换。尝试像对待字符串常量一样对待该值:
WHERE firstName LIKE '%' + @name + '%'
注意:没有单引号。
或者,也可以将通配符放入应用程序中:
WHERE firstName LIKE @name