【发布时间】:2010-11-16 15:54:07
【问题描述】:
我正在使用 SQLAlchemy 进行独立于数据库的查询。
我正面临to_char 函数的一个问题。
考虑如下简单查询:
select to_char(id,'999') from xyz
它在 Postgres 上运行,但 MySQL 不支持它。
如何使用 SQLAlchemy 使这个查询独立于数据库?
【问题讨论】:
标签: mysql sqlalchemy to-char
我正在使用 SQLAlchemy 进行独立于数据库的查询。
我正面临to_char 函数的一个问题。
考虑如下简单查询:
select to_char(id,'999') from xyz
它在 Postgres 上运行,但 MySQL 不支持它。
如何使用 SQLAlchemy 使这个查询独立于数据库?
【问题讨论】:
标签: mysql sqlalchemy to-char
您正在 MySQL 中寻找 format:
select format(id, '999') from xyz
要回答您的多合一问题:没有跨数据库的方法可以做到这一点。每个 RDBMS 都非常不同,除了相当简单的查询之外没有真正的标准化。对于字符串操作尤其如此。
【讨论】:
使用 CAST 函数进行简单的类型转换。它是 SQL 标准,SQLAlchemy 直接通过 cast() 函数支持它:http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast。
对于日期值,SQLA 有一个用于生成 SQL EXTRACT 函数的 extract() 函数 - 转换层将常见的字段名(如“月”、“日”、“分钟”等)转换为后端的适当关键字使用。
【讨论】:
使用强制转换函数,例如
cast(numberfield as char)
【讨论】: