南大通用GBase 8a支持中文表名和字段名,列名

GBase 8a数据库集群默认表和字段名字只支持字母、数字和下划线。通过设置gcluster_extend_ident参数,可以提供对中文表名和字段名、列名的支持。

参数

gcluster_extend_ident

用来控制是否可以创建中文表名字段、特殊字符的字段。
默认为 0,0 表示不开启,为 1 表示开启。
注:打开 gcluster_extend_ident 参数之后,系统从原来的只能创建字母
数字下划线命名方式,扩展到支持中文和特殊字符,但特殊字符不包括
"'",""","\"," . "四个字符。

使用样例

默认创建中文字段或表名,会报ERROR 1711 (HY000): (GBA-02DD-0008) Invalid character string错误。

表一旦创建成功,即使关闭参数,后续也不再受该参数影响。

gbase> create table 人员信息(编号 int, 姓名 varchar(100));
ERROR 1711 (HY000): (GBA-02DD-0008) Invalid character string: '人员信息'
gbase> set gcluster_extend_ident=1;
ERROR 1229 (HY000): Variable 'gcluster_extend_ident' is a GLOBAL variable and should be set with SET GLOBAL
gbase> set global gcluster_extend_ident=1;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> create table 人员信息(编号 int, 姓名 varchar(100));
Query OK, 0 rows affected (Elapsed: 00:00:00.73)

gbase> select * from 人员信息;
Empty set (Elapsed: 00:00:00.02)

gbase> insert into 人员信息 values(1,'张三'),(2,'李四');
Query OK, 2 rows affected (Elapsed: 00:00:00.55)
Records: 2  Duplicates: 0  Warnings: 0

gbase> select * from 人员信息;
+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|      1 | 张三   |
|      2 | 李四   |
+--------+--------+
2 rows in set (Elapsed: 00:00:00.02)

gbase> desc 人员信息;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| 编号   | int(11)      | YES  |     | NULL    |       |
| 姓名   | varchar(100) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
2 rows in set (Elapsed: 00:00:00.01)

gbase> set global gcluster_extend_ident=0;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> desc 人员信息;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| 编号   | int(11)      | YES  |     | NULL    |       |
| 姓名   | varchar(100) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
2 rows in set (Elapsed: 00:00:00.00)

gbase> select * from 人员信息;
+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|      1 | 张三   |
|      2 | 李四   |
+--------+--------+
2 rows in set (Elapsed: 00:00:00.01)

gbase> insert into 人员信息 values(3,'王五'),(4,'赵六');
Query OK, 2 rows affected (Elapsed: 00:00:00.47)
Records: 2  Duplicates: 0  Warnings: 0

gbase> select * from 人员信息;
+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|      1 | 张三   |
|      2 | 李四   |
|      3 | 王五   |
|      4 | 赵六   |
+--------+--------+
4 rows in set (Elapsed: 00:00:00.02)

gbase> select * from 人员信息 where 姓名='张三';

+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|      1 | 张三   |
+--------+--------+
1 row in set (Elapsed: 00:00:00.01)