VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

双引号解释为标识符

功能描述

Vastbase在MySQL兼容模式下,支持通过vastbase_sql_mode参数中的ANSI_QUOTES来控制双引号表示的效果。

  • 当启用ANSI_QUOTES时,双引号引用的内容被解释为标识符;
  • 当没有启用ANSI_QUOTES时,双引号引用内容被解释为字符串。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。

  • 当前版本中,vastbase_sql_mode默认值为ONLY_FULL_GROUP_BY, ANSI_QUOTES,包含“ANSI_QUOTES”。

    参数vastbase_sql_mode同时控制了B模式下的多种SQL校验规则,请注意参数取值对其它功能的影响。

  • 此特性支持的Vastbase版本:

    • V2.2 Build 10 (Patch No.11)及以后补丁版本。
    • V2.2 Build 11及以后版本。

示例

1、设置参数vastbase_sql_mode的值为ansi_quotes(会话级别)。

SET vastbase_sql_mode='ANSI_QUOTES';

2、查看当前vastbase_sql_mode的取值。

SHOW vastbase_sql_mode;

结果返回如下:

 vastbase_sql_mode
-------------------
 ANSI_QUOTES
(1 row)

3、创建测试表”qtest”

CREATE TABLE "qtest"(id int);

4、表名加双引号插入数据。

INSERT INTO "qtest" values(1);

结果返回如下,插入成功。

INSERT 0 1

5、不加双引号插入数据。

INSERT INTO qtest VALUES(2);

结果返回如下,插入成功。

INSERT 0 1

6、表名及插入数据加双引号插入数据。

INSERT INTO "qtest" VALUES("3");

结果返回如下,插入失败。

ERROR:  column "3" does not exist
LINE 1: INSERT INTO "qtest" VALUES("3");
                                   ^

7、清理环境。

DROP TABLE qtest;