【问题标题】:Database-Independent to_char Function in SQLAlchemySQLAlchemy 中与数据库无关的 to_char 函数
【发布时间】:2010-11-16 15:54:07
【问题描述】:

我正在使用 SQLAlchemy 进行独立于数据库的查询。

我正面临to_char 函数的一个问题。

考虑如下简单查询:

select to_char(id,'999') from xyz 

它在 Postgres 上运行,但 MySQL 不支持它。

如何使用 SQLAlchemy 使这个查询独立于数据库?

【问题讨论】:

    标签: mysql sqlalchemy to-char


    【解决方案1】:

    您正在 MySQL 中寻找 format

    select format(id, '999') from xyz
    

    要回答您的多合一问题:没有跨数据库的方法可以做到这一点。每个 RDBMS 都非常不同,除了相当简单的查询之外没有真正的标准化。对于字符串操作尤其如此。

    【讨论】:

    • 我同意 .. 对你 .. 我读到一些使用 sqlalchemy 我们可以克服差异的地方。我试过但失败了:(
    • @asb:很遗憾,在拨打电话之前,您必须检查您正在使用的 RDBMS。这可以在函数本身中,或者只是在不同的引擎中使用不同的函数。
    【解决方案2】:

    使用 CAST 函数进行简单的类型转换。它是 SQL 标准,SQLAlchemy 直接通过 cast() 函数支持它:http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast

    对于日期值,SQLA 有一个用于生成 SQL EXTRACT 函数的 extract() 函数 - 转换层将常见的字段名(如“月”、“日”、“分钟”等)转换为后端的适当关键字使用。

    【讨论】:

      【解决方案3】:

      使用强制转换函数,例如

      cast(numberfield as char)
      

      【讨论】:

        猜你喜欢
        • 2011-01-22
        • 2019-07-02
        • 1970-01-01
        • 2019-06-11
        • 2012-12-18
        • 2014-08-10
        • 2021-09-17
        • 2019-10-18
        • 2013-02-23
        相关资源
        最近更新 更多