mysql - sql join on string = integer 以在任何 RDBMS 上工作

标签 mysql sql postgresql join adodb

我需要加入列上的两个表,在一个表中定义为字符串,在另一个表中定义为整数。在两列中,实际存储的数据都是整数。这是我设计的 - 我无法更改。

所以当我加入 MySQL 时很好 - 它会默默地进行转换。 PostgreSQL 提示。有 CAST 运算符,我可以将其添加到查询中以将 strings 转换为 integers,但 CAST 函数在不同的 RDBMS 中定义不同。

我能否按照在所有(或许多)RDBMS 中工作的方式编写此查询?或者,是否有数据库抽象层可以为我做这件事? ADODB 已在项目中使用,但我看不出它是否以及如何帮助解决这个问题。

谢谢。

最佳答案

由于数据类型的原因,您不能以相同的方式为每个数据库CAST INT,因此您可以将数字字段转换为CHAR:

CAST(a.numeric_Field AS CHAR(5))` = b.stringfield

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

关于mysql - sql join on string = integer 以在任何 RDBMS 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27644811/

相关文章:

mysql - 在多开发人员环境中处理数据库 View 的迁移

mysql - 在 MySQL 中合并两个 UPDATE 语句

mysql - SQL:每小时、不同时间、几天内的平均值

mysql - FK 在创建表时导致崩溃

Python psycopg2 没有插入到 postgresql 表中

mysql 可以在两个级别对数据进行排序吗?

php - 注销脚本不起作用

mysql - 如何获取一对多连接中 NULL 记录的数量

django - 我如何在 DRF 中搜索多项内容(全文、地理位置等)?

postgresql - Gradle Docker任务