双引号解释为标识符
功能描述
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;