我有这个MySQL查询,它适用于MySQL数据库,但不适用于PostgreSQL:
select setype from _entity where id='72@78|'
现在,'72@78|'
到底想要做什么? id是一个整数字段,因此当在Postgressql DB上运行查询时,它会出现invalid input syntax for integer: "72@78|"
错误。
我知道|
是一个按位OR运算符,但究竟是什么在这里进行ORED?而且,同样重要的是,@
是什么?我试图在MySQL手册中查找它,但由于低于标准的搜索技能,我找不到它。
当我在MySQL DB上运行上述查询时,它会找到id值为72
的数据,不知何故,表达式的计算结果为第一个数字。
那么,上面的查询试图做什么,如何将其转换为PostgreSQL等价?
感谢您的帮助,祝您度过愉快的一天。
答案 0 :(得分:3)
MySQL正在将文本字符串转换为数字,并在第一个非数字字符后忽略任何内容,因此,它只是比较id = 72
,这是您从输出中得到的。
我的猜测是PostgreSQL试图将整个字符串转换为整数并失败,因为它不是一个有效的整数值。
要在PostgreSQL中执行等效操作,您需要在运行查询之前将72@78|
转换为简单整数。