首页 文章

使用HSQLDB关键字的奇怪行为

提问于
浏览
0

在HSQLDB中创建新表时,我有一个奇怪的结果 . 从HSQLDB的文档中,“user”是一个关键字,通常,我们不能将此值用于表名或列名,除非它是双引号 .

但是,我可以创建一个名为“USER”的数据库表,以及一个列名为“user”的数据库表DATA_RESULT,而不是双引号关键字 .

从DB读取数据时出现问题 . 例如,当我执行: "select * from DATA_RESULT" 并从ResultSet中读取"user"的值时,它可以工作 .

如果我执行 "select user from DATA_RESULT""SELECT * from DATA_RESULT where user = 1" ,则会发生错误 . sql语句未正确执行,ResultSet.next()始终返回false .

此外,从Lists of Keywords for HSQLDB,它说 HyperSQL has two modes of operation, which are selected with the SET DATABASE SQL NAMES { TRUE | FALSE } to allow or disallow the keywords as identifiers. The default mode is FALSE and allows the use of most keywords as identifiers ,它没有说明"user"是否可以用作标识符 .

我正在使用HSQLDB 2.0.0 .

这很令人困惑 . 有谁知道这里发生了什么?

提前致谢!任何建议都会有所帮助 .

1 回答

  • 1

    USER是获取当前用户名称的函数 . 例如:

    CALL USER
    

    您当然可以使用USER作为表名或列名 .

    在SELECT语句中,在名称周围使用双引号 .

    CREATE TABLE DATA_RESULT ("USER" INT, DATA VARCHAR(100))
    SELECT * FROM DATA_RESULT WHERE "USER" = 1
    

    使用双引号时,案例必须匹配 .

    请注意,网站上的指南会定期更新,目前对应于最新版本2.2.5 .

相关问题