【问题标题】:HyperSQL case insensitive delimited identifiersHyperSQL 不区分大小写的分隔标识符
【发布时间】:2012-03-23 13:36:18
【问题描述】:

HyperSQL 在创建表时会将所有列名转换为大写,对吧。
使用未定界标识符选择某些内容时,标识符不区分大小写并且
SELECT myColumn FROM myTable;
SELECT mYcOlUmN FROM myTable;
SELECT mycolumn FROM myTable;
会正常工作。

但是,当使用分隔标识符时,标识符区分大小写。所以
SELECT "MYCOLUMN" FROM myTable;
会工作,但

SELECT "myColumn" FROM myTable;
SELECT "mYcOlUmN" FROM myTable;
SELECT "mycolumn" FROM myTable;
不会!

所有大部分我的查询都使用小写分隔标识符(不要问为什么)。
HyperSQL 是否提供了一种使用不区分大小写的分隔标识符或将不带引号的标识符视为小写的方法?

【问题讨论】:

    标签: sql hsqldb


    【解决方案1】:

    当您不使用带引号的标识符时,标准 SQL 不区分大小写。当您使用它们时,带引号的对象被视为区分大小写,而未带引号的名称则被视为大写。

    您可以将所有列重命名为小写版本。

    ALTER TABLE MYTABLE ALTER COLUMN MYCOLUMN RENAME TO "mycolumn"
    

    您可以通过选择 PUBLIC 架构中的所有表 + 列名并为每列执行重命名语句,以编程方式(在 Java 中)执行此操作。

    【讨论】:

    • Ups.. 我误导了你!我的大部分查询都使用小写引用的标识符!在您的示例中,所有进一步的选择查询都应使用带引号的标识符,因为未带引号的标识符被视为大写!
    • 使用必须一致,遵守规则。没有其他办法。
    猜你喜欢
    • 2012-11-01
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多