【问题标题】:Turn off upper-case for table and column names in HSQL?关闭 HSQL 中表名和列名的大写?
【发布时间】:2016-07-11 20:00:21
【问题描述】:

如何关闭HSQL中表名和列名的强制大写模式?

<artifactId>hsqldb</artifactId>
<version>2.3.1</version>

操作系统: Windows 7 x64

【问题讨论】:

  • SQL 标准要求以大写形式存储名称。我不认为你可以在 HSQLDB 中关闭它
  • 你可以试试 CREATE SYNONYM REG FOR OTHER_SCHEMA.REGISTRATION_DETAIL_TABLE 下面的同义词、example 和 ddl ;从 REG 中选择 R_ID、R_DATE R_DATA > CURRENT_DATE - 3 天

标签: sql hsqldb lowercase


【解决方案1】:

我不确定,我正确理解了这个问题,但只是想付出一些努力。

SET DATABASE COLLATION SQL_TEXT_UCC

可以参考http://hsqldb.org/doc/guide/dbproperties-chapt.html

【讨论】:

  • 从文档来看,它看起来是正确的使用方法。不幸的是,即使将此语句添加到我的数据库创建脚本中,看起来仍然会在区分大小写的情况下执行比较。
  • 请注意:连续投票将在一天结束时反转。当你明天失去 200 个代表时,不要感到惊讶。欺骗系统是行不通的。
  • 不要使用这个,根据规范,它不是关于 names 而是关于 VARCHAR 字段中的数据。
【解决方案2】:

这方面的规则在HSQLDB documentation中解释:

当使用 CREATE 语句之一创建数据库对象或 使用 ALTER 语句重命名,如果名称包含在 double 中 引号,确切的名称用作大小写正常形式。但如果是 不包含在双引号中,名称将转换为大写和 这个大写版本作为 case-normal 存储在数据库中 表格。

标识符的区分大小写规则可以简单地描述为 如下:

  • 除双引号中的标识符和单引号中的字符串外,SQL语句的所有部分在处理前都转换为大写 引号
  • 然后将不带引号和双引号的标识符视为区分大小写
  • 大多数数据库引擎都遵循相同的规则,但在某些方面,MySQL 和 MS SQLServer 除外。

AFAIK 无法关闭此行为。 (值得注意的是,标准 SQL 在不使用带引号的标识符时不区分大小写。)但如上所述,可以通过用引号括起来来指定小写标识符,例如:

CREATE TABLE "lowercasetablename" ("lowercasecolname" INT);
SELECT "lowercasecolname" FROM "lowercasetablename";

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多