Я преобразовываю существующий проект из MySQL в Postgres. В коде есть немало необработанных SQL-литералов, которые используют ?
в качестве заполнителя, например.
SELECT
id
FROM
users
WHERE
name = ?
Но я получаю эту ошибку:
DB query error: error: operator does not exist: character varying = ?
Я не хочу, чтобы преобразовать весь мой существующий SQL из ?
операторов Postgres стиля как $1
.
Есть ли способ, чтобы узел-postgres принимал вопросительные знаки или утилиту, которая может преобразовывать в параметры стиля postgres?
Обратите внимание, что какой-то хакерство на основе Regex неприемлемо, потому что вопросительные знаки могут быть внутри кавычек или обратная косая черта сбежала на любую глубину.
Использование ссылки? в запросе это не MySQL, а уровень приложения, например. Ява. Скорее всего, это не должно измениться. Можете ли вы показать нам этот запрос в контексте кода? –
Какую версию Postgres вы используете? Поскольку в документации упоминается использование '?' (Https://www.postgresql.org/docs/9.1/static/ecpg-commands.html), а также этот случайный вопрос SO (http://stackoverflow.com/questions/10659737/how-can-i-use-a-query-with-placeholder-inside-quotes-perl-postgresql) –
Что такое узел-postgres и почему он не находится в тегах, поскольку он, по-видимому, является ядром вашего вопрос? – joop