2016-03-06 109 views
0

我有一个SQL Server表有两列KeywordEmotion如何在一个SQL Server表中的单词内搜索一个单词

我要搜索一个词(在Keyword列中指定),其中包含一个句子。对于例如在字符串中: - 你怎么

我想执行两个查询:

  1. 我要搜索如果字符串包含“如何”(howKeyword列指定)..

  2. 如果字符串包含how,我想要显示的受文者存储在表

Emotion列积水值。这是我的示例代码(可以是完全错误的:P): -

public partial class message : System.Web.UI.Page 
{ 
    string constring = ConfigurationManager.ConnectionStrings["AnonymiousSocialNetworkConnectionString"].ToString(); 

    protected void btnsend_Click(object sender, ImageClickEventArgs e) 
    { 
     SqlConnection con = new SqlConnection(constring); 
     string value = txtmsg.Text; 
     con.Open(); 

     SqlDataReader myReader = null; 
     SqlCommand myCommand = new SqlCommand("select emotion from messageanalysis where keyword CONTAINS'",con); 
     myReader = myCommand.ExecuteReader(); 
     while(myReader.Read()) 
     { 
      lblStatus.Text = myReader["emotion"].ToString();// **this label should Display corresponding value stored in Emotion(column)**// 
     } 
    } 
} 
+0

我不明白为什么你需要两个查询,你应该是足够的一个。 – BugFinder

+0

我的意思是说我想要执行两个操作,即搜索一个单词并获得相应的值 –

+0

那么,那是什么半sql呢....所以..我没有得到你的问题或问题。 – BugFinder

回答

0

你只需要只有一个SQL命令,并应如下所示 -

string searchParam = "hello";     
SqlCommand myCommand = new SqlCommand("select emotion from messageanalysis where CONTAINS(keyword,@SearchParam)",con); 
myCommand.Parameters.Add("@SearchParam", System.Data.SqlDbType.VarChar, 20).Value = searchParam,; 

如果服务器上未启用全文功能,CONTAINS可能无法正常工作。请检查该链接查看更多细节 - Cannot use a CONTAINS or FREETEXT predicate on table or indexed view because it is not full-text indexed

如果不希望启用此功能,则使用LIKE -

SqlCommand myCommand = new SqlCommand("select emotion from messageanalysis where keyword like @SearchParam)",con); 
myCommand.Parameters.Add("@SearchParam", System.Data.SqlDbType.VarChar, 20).Value = "%" + searchParam + "%"; 
+0

我不想提及'如何'旁边的关键字,因为你已经显示..只是一个直接链接到列包含数百个单词中的一个可能是'how' –

+0

它给了我这个错误--->不能在表或索引视图上使用CONTAINS或FREETEXT谓词'messageanalysis',因为它不是全文索引的 –

+0

我不是当然,如果我能理解你的问题,我已经编辑了我的答案,使用参数化查询,希望应该为你工作。 – Vinit

相关问题