【问题标题】:CONTAINS operator using '@'包含使用“@”的运算符
【发布时间】:2010-11-01 07:01:19
【问题描述】:

我正在尝试使用Contains 运算符。它适用于测试数据,例如。
WHERE CONTAINS(file,'"*ash*"')

但是,我想使用 CONTAINS(file,'"*@key*"') 之类的东西从 TextBox 中获取关键字,但这似乎不起作用。请有任何建议。

谢谢

【问题讨论】:

  • 你能发布一个不起作用的代码示例吗?
  • 我在 sqldatasource 中使用它作为测试 SELECT article_title, author, publish_by, publish_date, [file] FROM tb_article WHERE (category = @cat) AND CONTAINS (file_name, '"a "') 并且有效,但这是测试我实际上希望用于搜索的关键字来自文本框,我尝试了 CONTAINS(file_name,'"' + @key + ' "') 但在 '+' 附近出现错误无法解析文本。 @key 将在下一步中将参数定义为 textbox1.text。你明白我在说什么还是我让你感到困惑?
  • 我也尝试过 CONTAINS(file_name,'a') 但没有返回没有收到错误但没有返回值这就是为什么当我尝试使用双引号时它可以工作,显然当您使用双引号表示 * 用作通配符

标签: sql-server full-text-search contains


【解决方案1】:

@ 用于在 SQL 中声明变量。因此,它不需要在引号内。例如:

DECLARE @Key varchar(100);
SET @Key = '*ash*'; 
SELECT file FROM SomeTable WHERE CONTAINS(file, @Key);

编辑:如果您通过代码传递内联 SQL,我建议您这样做:

C# 示例:

string key = textBox1.Text;
string query = "SELECT file FROM SomeTable WHERE ";
query += String.Format("CONTAINS(file, '\"*{0}*\"')", key);

【讨论】:

  • 嘿,感谢您的回复,但这可以在 sqldatasource 中使用吗?因为那是我真正想做的地方。我也尝试在sql server中使用不带双引号的它,它只适用于我觉得我做错了什么的双引号。但任务是在 sqldatasource 中执行此操作以显示在 gridview 中。
  • 我在 sqldatasource 中使用它作为测试 SELECT article_title, author, publish_by, publish_date, [file] FROM tb_article WHERE (category = @cat) AND CONTAINS (file_name, '"a "') 并且有效,但这是测试我实际上希望用于搜索的关键字来自文本框,我尝试了 CONTAINS(file_name,'"' + @key + ' "') 但在 '+' 附近出现错误无法解析文本。 @key 将在下一步中将参数定义为 textbox1.text。你明白我在说什么还是我让你感到困惑?
  • 我也尝试过 CONTAINS(file_name,'a') 但没有返回没有收到错误但没有返回值这就是为什么当我尝试使用双引号时它可以工作,显然当您使用双引号表示 * 用作通配符。
  • 在绝望的时候请帮助我
  • string key = textBox1.Text;string query = "SELECT file FROM SomeTable WHERE ";query += String.Format("CONTAINS(file, '{0}' )“, 钥匙);嘿我想用“”我可以用“CONTAINS(file,'"{0}"')”
猜你喜欢
  • 2021-02-09
  • 2017-10-25
  • 2013-12-28
  • 1970-01-01
  • 2011-10-24
  • 2013-01-29
  • 1970-01-01
  • 2021-02-28
  • 2020-10-28
相关资源
最近更新 更多