Оператор LIKE для базы данных Progress SQL - PullRequest
2 голосов
/ 13 ноября 2009

Я пытаюсь сделать что-то подобное в Progress SQL (ЭТО НЕ ПОСТРЕСКИ!)

SELECT
    CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
    bar

Однако Progress не поддерживает оператор LIKE. INSTR выглядит так, как будто это может сделать работу, но это расширение Progress и не поддерживается на используемой БД. Есть ли другой способ добиться этого, используя стандартные функции ODBC?

Спасибо

Ответы [ 4 ]

5 голосов
/ 13 ноября 2009

В Progress 4GL нет оператора LIKE. (Существует ключевое слово LIKE, но оно используется для чего-то другого.) Вместо этого вам нужно использовать операторы MATCHES или CONTAINS. Я никогда не использовал интерфейс SQL для Progress, но он может быть таким же.

Так что вы можете попробовать:

SELECT
    CASE WHEN code MATCHES '*foo*' THEN 'Y' ELSE 'N' END as foo
FROM
    bar

Примечание - MATCHES использует * для подстановочного знака вместо %.

Или:

SELECT
    CASE WHEN code CONTAINS 'foo' THEN 'Y' ELSE 'N' END as foo
FROM
    bar
1 голос
/ 31 июля 2012

Только что нашел этот вопрос и всем, у кого все еще могут быть проблемы, я предлагаю использовать SquirrelSQL Client, который позволяет вам написать почти 100% синтаксис SQL к базе Progress. Вроде включено

0 голосов
/ 17 ноября 2009

Какую версию Progress вы используете 10.0? 10,1? 10,2

Используете ли вы встроенный SQL-89 из сеанса 4GL или используете SQL-92 через соединение ODBC / JDBC? Похоже, вы используете SQL-92, так как вы ссылались на «драйверы» и INSTR.

В любом случае не существует LIKE для SQL. Хотя есть INSTR и LOCATE, которые могут делать то, что вы хотите.

МАТЧИ доступны только как ключевое слово 4GL. Чтобы использовать его в SQL, вам нужно использовать встроенный SQL-89, но никто в здравом уме не будет кодировать SQL в сеансе 4GL. Он есть только как маркетинговый флажок, и это совершенно ненадежный способ написания кода 4GL.

0 голосов
/ 13 ноября 2009

Вы можете попробовать с MATCHES (тот же синтаксис, что и LIKE), и, возможно, это работает.

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