sql join on string = integer 可用于任何 RDBMS

aav*_*yan 5 mysql sql postgresql join adodb

我需要join在列上有两个表,在一个表中定义为string,在另一个表中定义为integer。在这两列中,实际存储的数据都是整数。这是设计给我的 - 我无法改变这一点。

所以当我加入时MySQL很好 - 它会默默地进行转换。PostgreSQL抱怨。有一些CAST运算符,我可以将它们添加到查询中以将字符串转换为整数,但 CAST 函数在不同的 RDBMS 中定义不同。

我可以按照它在所有(或许多)RDBMS 中的工作方式编写此查询吗?或者,是否有 DB 抽象层,它可以为我做到这一点?ADODB已在项目中使用,但我不知道它是否以及如何有助于解决此问题。

谢谢你。

Har*_* CO 6

由于数据类型的原因,您无法对每个数据库CAST采用INT相同的方式,因此您可以将数字字段转换为CHAR

CAST(a.numeric_Field AS CHAR(5))` = b.stringfield
Run Code Online (Sandbox Code Playgroud)

这适用于 Postgresql、MySQL、SQL Server,不确定其他的。