VastbaseG100

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

Menu

双引号解释为标识符

功能描述

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

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

注意事项

  • 该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时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、创建并切换至兼容模式为MySQL的库db_mysql。

CREATE DATABASE db_mysql dbcompatibility='B';
\c db_mysql

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

set vastbase_sql_mode='ANSI_QUOTES';

3、查看当前vastbase_sql_mode的取值。

show vastbase_sql_mode;

结果返回如下:

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

4、创建测试表”qtest”

CREATE TABLE "qtest"(id int);

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

insert into "qtest" values(1);

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

INSERT 0 1

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

insert into qtest values(2);

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

INSERT 0 1

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

insert into "qtest" values("3");

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

ERROR:  column "3" does not exist
LINE 1: insert into "qtest" values("3");
                                   ^