我不明白这段MySQL表示法,后来不知道如何在Postgresql中做到这一点

时间:2011-10-25 20:29:50

标签: mysql postgresql

我有这个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等价?

感谢您的帮助,祝您度过愉快的一天。

1 个答案:

答案 0 :(得分:3)

MySQL正在将文本字符串转换为数字,并在第一个非数字字符后忽略任何内容,因此,它只是比较id = 72,这是您从输出中得到的。

我的猜测是PostgreSQL试图将整个字符串转换为整数并失败,因为它不是一个有效的整数值。

要在PostgreSQL中执行等效操作,您需要在运行查询之前将72@78|转换为简单整数。