【问题标题】:How to use the LIKE operator in a C# Command?如何在 C# 命令中使用 LIKE 运算符?
【发布时间】:2012-09-06 03:37:59
【问题描述】:

我需要在 Sql 命令中插入一个字符串

search.CommandText = "SELECT * FROM Contacts WHERE Name like ' + @person + % + '";

在命令中使用LIKE 的正确方法是什么?

【问题讨论】:

  • 你正在使用什么 rdbms? MySQL、SQLServer、..?

标签: c# sql sql-like


【解决方案1】:

仅供参考!

 string strQuery = "select Ac_Key from AccountDetails where (Ac_Name like '%'+@Ac_Name+'%');
 SqlCommand cmb1 = new SqlCommand(strQuery);
 cmb1.Parameters.AddWithValue("@Ac_Name", AccountName);
      

【讨论】:

    【解决方案2】:

    "SELECT * FROM table_name like concat(@persons,'%')"

    我用过。

    【讨论】:

    • 您好,欢迎来到 StackOverflow。感谢您的回答,但比“我用过”多一点解释会更好
    【解决方案3】:

    如果字段类型是 Nvarchar 使用此代码:

       "select * from Contacts where name like N'%"+person+"%'"
    

    【讨论】:

      【解决方案4】:

      这应该可以工作

      "Select *  from customer where FirstName LIKE '"+TextBox1.Text + '%'+ "'   ";
      

      【讨论】:

        【解决方案5】:
        select * from Contacts WHERE Name like '%' + '"+@person+"' + '%' 
        select * from Contacts WHERE Name like '%' + '"+@person+"' 
        select * from Contacts WHERE Name like '"+@person+"' + '%'
        

        【讨论】:

          【解决方案6】:
          searchPerson.CommmandText = "SELECT * FROM Contacts WHERE Name like '" + @person + "%'";
          

          【讨论】:

          • 可能无法编译,除非实际上有一个名为person变量。 (巧合的是,@ 在 C# 标识符之前有效 - 幸运!)。无论哪种方式 - 您将参数化命令更改为潜在的安全风险:en.wikipedia.org/wiki/SQL_injection
          【解决方案7】:
          searchPerson.CommandText =  
             "SELECT * FROM Contacts WHERE Name like @person + '%'"
          

          【讨论】:

            【解决方案8】:

            应该是:

            SELECT * FROM Contacts WHERE Name like @person + '%'
            

            @person 是一个参数 - 你不需要在它周围加上单引号。你只需要将它与% 连接起来,它应该有引号。

            记住:

            • 您可以保留它"SELECT * FROM Contacts WHERE Name like @person",并让参数值包含%(C# 中的连接更容易理解)。
            • 您可能还想转义字符串中已有的其他通配符:%_[]

            【讨论】:

              【解决方案9】:

              这是你的意思吗?

              searchPerson.CommandText = "SELECT * FROM Contacts WHERE Name LIKE '"+person+"%'";
              

              【讨论】:

              • 这对Sql Injection 攻击开放!哦,我的!
              • 呵呵是的。可能应该在答案中提到这一点。我会用“让它工作,然后修复安全”的借口:)
              • 这就是我使用参数 LOL 的原因
              【解决方案10】:

              使用语法:

              SELECT column_name(s)
              FROM table_name
              WHERE column_name LIKE pattern
              

              "%" 符号可用于定义模式前后的通配符(模式中缺少字母)。

              例如:

              • LIKE '%xy' 会得到任何以 'xy' 结尾的东西
              • LIKE '%xy%' 会给你任何包含“xy”的东西
              • LIKE 'xy%' 会得到任何以“xy”开头的东西

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-03-01
                • 1970-01-01
                • 1970-01-01
                • 2013-01-19
                • 2018-03-09
                • 1970-01-01
                相关资源
                最近更新 更多