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

时间:2010-10-18 14:09:38

标签: oracle parameters asp.net-2.0

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

        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 个答案:

答案 0 :(得分:9)

select * from TABLE where FIELD like ('%' || :text || '%')

答案 1 :(得分:3)

更新:我的不好,如果您使用的是oracle驱动程序,请参阅this link寻求帮助。这取决于您使用哪个驱动程序进行数据库访问,如果是oledb,您需要执行以下操作 这里是更正后的代码:


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

答案 2 :(得分:1)

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

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