[英]using parameter in SQL with LIKE keyword
从我的C#程序,我访问一个SQL Server 2008数据库。 我有一个带有全文索引的表,想搜索一个索引条目:
SELECT page_id FROM page_categories WHERE page_title LIKE @title
当'title'没有空格时,一切都很好,但是当title确实包含空格时,请求失败。 它不会引发任何错误,但是返回的记录集已关闭
command.ChangeParameter("title", title);
using (System.Data.IDataReader reader = command.ExecuteQuery())
{
while (reader.Read())
resultSet.Add(reader.GetInt32(0));
reader.Close();
}
我不能用''括住@title参数,因为命令对象会将@title解释为字符串而不是参数。
SELECT page_id FROM page_categories WHERE page_title LIKE '@title'
有人知道标题参数可以包含空格时如何将参数用于LIKE请求吗?
预先感谢,弗兰克
你可以这样做:
SELECT page_id
FROM page_categories
WHERE page_title LIKE '%' + @title + '%'
除了ck的答案,您可以执行以下操作:
command.ChangeParameter("title", "%"+title.Trim()+"%");
您不使用LIKE搜索自由文本索引。 您使用CONTAINS或FREETEXT或类似内容。
SELECT page_id
FROM page_categories
WHERE page_title LIKE '%' + @title + '%'
%
表示通配符,类似于SQL之外更常见的*
(零个或多个字符的任何字符串)。
您应确保在调用代码中通过.Trim()
修剪参数。
这是可能的通配符的完整参考。
我将单引号添加到查询中:
SELECT page_id FROM page_categories WHERE page_title LIKE '' + @title + ''
如果我尝试使用'Contains'(CONTAINS(page_title,``+ @tile +''))尝试此操作,则会收到语法错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.