Я не понимаю эту часть записи MySQL и впоследствии не знаю, как это сделать в Postgresql - PullRequest
1 голос
/ 26 октября 2011

У меня есть этот запрос MySQL, и он работает с базой данных MySQL, но не с базой данных PostgreSQL:

select setype from _entity where id='72@78|' 

Теперь, что именно пытается сделать '72@78|'?id - это целочисленное поле, поэтому при выполнении запроса к базе данных Postgressql выдается ошибка invalid input syntax for integer: "72@78|".

Я знаю, что | является побитовым оператором ИЛИ, но что именно здесь ORED?И, что не менее важно, зачем нужен @?Я пытался найти его в руководстве по MySQL, но из-за нехватки навыков поиска я не смог его найти.

Когда я запускаю вышеупомянутый запрос в БД MySQL, он находит данные со значением идентификатора 72, так или иначе, выражение вычисляется до первого числа.

Итак, что такоеПриведенный выше запрос пытается выполнить, и как мне преобразовать его в эквивалент PostgreSQL?

Спасибо за вашу помощь, хорошего дня.

1 Ответ

3 голосов
/ 26 октября 2011

MySQL преобразует текстовую строку в числовую и игнорирует что-либо после первого нечислового символа, поэтому он просто сравнивает id = 72, то есть то, что вы получаете из вывода.

Я предполагаю, что PostgreSQL пытается преобразовать всю строку в целое число, и это не удается, поскольку оно не является допустимым целочисленным значением.

Чтобы сделать эквивалент в PostgreSQL, вам необходимо преобразовать 72@78| впростое целое число перед выполнением запроса.

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