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