Каков наилучший способ параметризации запроса LIKE? - PullRequest
1 голос
/ 18 октября 2010

Я пытаюсь реализовать простой поиск, используя 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 ]

9 голосов
/ 18 октября 2010
select * from TABLE where FIELD like ('%' || :text || '%')
3 голосов
/ 18 октября 2010

обновление: плохо, если вы используете драйвер oracle, см. эту ссылку для получения помощи.это зависит от того, какой драйвер вы используете для доступа к БД, в случае 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

1 голос
/ 19 октября 2010

В подобных случаях я предпочитаю следующий синтаксис:

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