我有这个MySQL查询,它在MySQL数据库上工作,但不能在PostgreSQL上工作:
select setype from _entity where id='72@78|'
现在,'72@78|'
到底想做什么?id是一个整数字段,所以当查询在Postgressql数据库上运行时,它会给出一个invalid input syntax for integer: "72@78|"
错误。
我知道|
是位或运算符,但这里究竟是什么?同样重要的是,@
是干什么用的?我试图在MySQL手册中查找它,但由于搜索技能低于标准,我找不到它。
当我在MySQL数据库上运行上面的查询时,它发现id值为72
的数据,不知何故,表达式计算为第一个数字。
谢谢你的帮助,祝你愉快。
MySQL将文本字符串转换为数字,并忽略第一个非数字字符之后的任何内容,因此,它只是比较id = 72
,这就是您从输出中获得的内容。
我的猜测是PostgreSQL正在尝试将整个字符串转换为整数并且失败,因为它不是一个有效的整数值。
在PostgreSQL中做同样的事情,你需要在运行你的查询之前将72@78|
转换成一个简单的整数