代码之家  ›  专栏  ›  技术社区  ›  chris

参数化LIKE查询的最佳方法是什么?

  •  1
  • chris  · 技术社区  · 14 年前

    我试图实现一个简单的搜索,在我的SQL语句中使用LIKE:

            Using cmd As New OracleCommand
               cmd.Connection = conn
               cmd.CommandType = CommandType.Text
               cmd.CommandText = "select * from TABLE where FIELD like '%:text%'"
               cmd.Parameters.AddWithValue("text", searchValue)
               ...
            End Using
    

    3 回复  |  直到 14 年前
        1
  •  9
  •   Ken Bloom    14 年前
    select * from TABLE where FIELD like ('%' || :text || '%')
    
        2
  •  3
  •   Prashant Lakhlani    14 年前

    更新:我的错,如果您使用的是oracle驱动程序,请参见 this link 以下是更正代码:

    
    Using cmd As New OracleCommand
               cmd.Connection = conn
               cmd.CommandType = CommandType.Text
               cmd.CommandText = "select * from TABLE where FIELD like ?"
               cmd.Parameters.AddWithValue("@text", '%'+searchValue+'%')
               ...
            End Using
    
    

    如果是oracle驱动程序,则需要执行以下操作:

    
    Using cmd As New OracleCommand
               cmd.Connection = conn
               cmd.CommandType = CommandType.Text
               cmd.CommandText = "select * from TABLE where FIELD like :text"
               cmd.Parameters.AddWithValue(":text", '%'+searchValue+'%')
               ...
            End Using
    
    
        3
  •  1
  •   Jeffrey Kemp    14 年前

    在这种情况下,我更喜欢这种语法:

    select * from TABLE where INSTR(FIELD, :text) > 0