Синтаксис SQL "LIKE" - PullRequest
       7

Синтаксис SQL "LIKE"

8 голосов
/ 29 января 2011

Я пишу приложение, которое должно работать как на mysql, так и на postgresql.Я должен использовать like для сравнения некоторых значений.

В mysql LIKE регистр не учитывается.В postgresql LIKE он чувствителен к регистру и ILIKE нечувствителен к регистру.

Каков наилучший способ сделать твердый запрос, который работает на оба варианта, если совпадение должно быть без учета регистра?

Есть ли у PDO решение для этого?

Ответы [ 2 ]

10 голосов
/ 29 января 2011

Самый простой способ обеспечить LIKE без учета регистра - использовать что-то вроде одного из них:

LOWER(column_name) LIKE LOWER(pattern)
UPPER(column_name) LIKE UPPER(pattern)

Или вы можете в верхнем / нижнем регистре pattern вне SQL и просто использовать:

LOWER(column_name) LIKE down_cased_pattern
UPPER(column_name) LIKE up_cased_pattern

Я склонен использовать LOWER по привычке, поскольку строчные буквы легче читать и, следовательно, легче отлаживать.

3 голосов
/ 29 января 2011

Это работа уровня абстракции базы данных .

PDO не делает то, что вы ищете, но есть несколько PHP DAL, если вы Google для них .

PDO не предоставляет базу данных абстракция; он не переписывает SQL или подражать отсутствующим функциям. Вам следует использовать полноценный слой абстракции, если вам нужен этот объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...