C# 用LIKE关键字在SQL中使用参数
从我的C程序中,我访问SQL Server 2008数据库。我有一个带有fulltextindex的表,希望搜索索引项:C# 用LIKE关键字在SQL中使用参数,c#,sql,parameters,C#,Sql,Parameters,从我的C程序中,我访问SQL Server 2008数据库。我有一个带有fulltextindex的表,希望搜索索引项: SELECT page_id FROM page_categories WHERE page_title LIKE @title 当“title”没有withespaces时,一切正常,但当title确实包含withespaces时,请求失败。它不会抛出错误,但返回的记录集已关闭 command.ChangeParameter("title", title); using
SELECT page_id FROM page_categories WHERE page_title LIKE @title
当“title”没有withespaces时,一切正常,但当title确实包含withespaces时,请求失败。它不会抛出错误,但返回的记录集已关闭
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'
当title参数可以包含空格时,有人知道我如何为LIKE请求使用参数吗
提前感谢,,
弗兰克你可以这样做:
SELECT page_id
FROM page_categories
WHERE page_title LIKE '%' + @title + '%'
您可以这样做:
SELECT page_id
FROM page_categories
WHERE page_title LIKE '%' + @title + '%'
除了ck的回答之外,您还可以这样做:
command.ChangeParameter("title", "%"+title.Trim()+"%");
除了ck的回答之外,您还可以这样做:
command.ChangeParameter("title", "%"+title.Trim()+"%");
您不需要使用LIKE来搜索freetext索引。您可以使用CONTAINS或FREETEXT或类似工具。您不可以使用LIKE搜索FREETEXT索引。您可以使用CONTAINS、FREETEXT或类似内容
SELECT page_id
FROM page_categories
WHERE page_title LIKE '%' + @title + '%'
%表示一个与SQL外部更常见的*字符类似的通配符,即任何零个或多个字符的字符串
您应该确保调用代码中的参数是通过.Trim修剪的
是可能的野人的全部参考
%表示一个与SQL外部更常见的*字符类似的通配符,即任何零个或多个字符的字符串
您应该确保调用代码中的参数是通过.Trim修剪的
是可能的Wildchar的完整引用。我将单引号添加到查询中:
SELECT page_id FROM page_categories WHERE page_title LIKE '' + @title + ''
如果我尝试使用“Contains”Contains page_title++@tile+,我会得到一个语法错误。我将单引号添加到查询中:
SELECT page_id FROM page_categories WHERE page_title LIKE '' + @title + ''
如果我尝试使用“Contains”Contains page_title++@tile+,我会得到一个语法错误。我想匹配精确的字符串。比如说,我的数据库中有“工具”和“工具歌曲”。当我用title=tool搜索时,我只想得到值为“tool”的行,而不是“tool songs”。但情况就是这样,当我使用通配符时……那么您应该能够在page_title=@title的位置执行操作。也许你需要提供更好的例子…我想做的相对简单:我有一个带有nvarchar字符串和id的表。我想获得给定字符串的id-我不能确定nvarchar是唯一的。我想匹配精确的字符串。比如说,我的数据库中有“工具”和“工具歌曲”。当我用title=tool搜索时,我只想得到值为“tool”的行,而不是“tool songs”。但情况就是这样,当我使用通配符时……那么您应该能够在page_title=@title的位置执行操作。也许你需要提供更好的例子…我想做的是相对简单的:我有一个带有nvarchar字符串和id的表。我想获得给定字符串的id-我不能确定nvarchar是唯一的。啊,谢谢。但我的问题仍然是一样的:从包含页面标题的页面类别中选择页面id,@title将不起作用,当title的值包含Withespace时。它抛出了一个语法错误。啊,谢谢。但我的问题仍然是一样的:从包含页面标题的页面类别中选择页面id,@title将不起作用,当title的值包含Withespace时。它抛出一个语法错误。