Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用LIKE关键字在SQL中使用参数_C#_Sql_Parameters - Fatal编程技术网

C# 用LIKE关键字在SQL中使用参数

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

从我的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 (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时。它抛出一个语法错误。