【问题标题】:What is the standard SQL type for binary data?二进制数据的标准 SQL 类型是什么?
【发布时间】:2012-03-30 02:47:51
【问题描述】:

我有一个将 java 映射到 SQL 类型的函数。 由于我要存储二进制数据,是否有任何 SQL 标准定义的类型可以在 PostgreSQL 和 hsqldb 中使用?

【问题讨论】:

    标签: sql postgresql hsqldb


    【解决方案1】:

    SQL 92 standard 没有定义二进制类型。 PostgreSQL 有一个bytea 类型,hsqldb 有一个binary 类型。

    对于一个非常便携(如果效率不高)的解决方案,请将二进制文件转换为base64,并将其存储在一个字符串中。

    【讨论】:

    • 指定SQL的人好像不太聪明……我想我会做第一个解决方案。我需要 hsqldb 进行单元测试和 postgres 进行永久存储,所以应该没问题。
    • @user3001:我建议避免使用与生产不同的数据库进行单元测试。它降低了测试的价值。自动设置临时 Postgres 数据库侦听 localhost 和一些高端口(或只是 Unices 上的 Unix 域套接字)进行测试非常容易。
    • @user3001:您说过,“指定 SQL 的人 [原文如此] 似乎并不聪明”。我认识委员会里的一个人。我会告诉他你的想法。他可能根本不会睡觉。
    • 我认为 SQL:1992 标准在这里不合适,因为它早已被弃用。我认为它仍然有它的用途,例如可以断言,所有 SQL 产品都应该实现入门级 SQL:1992,但同样可以说当前标准的核心。但是诸如“这是否存在 SQL 标准”之类的问题应该参考当前的标准 IMO。
    【解决方案2】:

    BINARY 和 VARBINARY 由 SQL 标准定义。该标准目前为 SQL:2011(在 92、1999、2003 和 2008 之后)。 HSQLDB 支持标准定义的所有核心数据类型。

    PostgreSQL BYTEA 类似于 VARBINARY。您可以将 HSQLDB 中的 BYTEA 类型定义为具有较大最大大小的 VARBINARY 类型:

    CREATE TYPE BYTEA AS VARBINARY(1000000)
    

    【讨论】:

      【解决方案3】:

      SQL 自 1999 年以来就支持二进制类型:[https://mariadb.com/kb/en/sql-data-types/]。供应商已经有十多年的时间来添加对二进制类型的支持,大多数 SQL 数据库都这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-19
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        • 2022-01-14
        • 1970-01-01
        相关资源
        最近更新 更多