如何配置 达梦数据库(DM Database) 的 字符集 和 排序规则。我会分成创建库时和修改已有库两种情况来说。
一、新建数据库时配置字符集和排序规则
在创建数据库的时候,达梦会要求设置字符集和排序规则。这一般通过 dminit 工具或者配置脚本来完成。
比如使用命令行 dminit 工具,可以这样指定:
dminit path=/dmdbms/data db_name=TEST charset=GB18030 page_size=16 extent_size=32 case_sensitive=1
charset:就是指定字符集,比如:UTF-8(国际通用)GB18030(中文环境常用)ASCII(纯英文场景)
case_sensitive:大小写敏感设置,1表示敏感,0表示不敏感。- 排序规则(Collation)一般是根据字符集自动带入的,或者在后续建库脚本中进一步细调。
注意: 达梦数据库一旦建库完成后,字符集是不可更改的。
二、修改已有库的排序规则(局部调整)
如果数据库已经存在,只能在表、列、查询级别上去指定排序规则,比如:
- 创建表时指定列排序规则:
CREATE TABLE T_USER (
ID INT,
NAME VARCHAR(100) COLLATE "BIN"
);
COLLATE "BIN":按二进制比较,区分大小写。- 也可以用其他,比如
"CI_AI"(不区分大小写、忽略重音)
- 查询时指定排序规则:
SELECT * FROM T_USER ORDER BY NAME COLLATE "CI_AI";
这样,哪怕数据库整体是大小写敏感的,你在具体查询中也可以做到局部控制。
三、常见字符集与排序规则
| 字符集 | 说明 | 适用场景 |
|---|---|---|
| UTF-8 | 国际标准编码,支持所有语言字符 | 多语言应用 |
| GB18030 | 国家标准中文编码 | 中文系统 |
| ASCII | 仅英文字符,最简单 | 轻量级英文应用 |
排序规则(Collation)常见的有:
"BIN":二进制比较(最快速,区分大小写)"CI_AI":Case Insensitive, Accent Insensitive(不区分大小写且忽略重音)"CS_AS":Case Sensitive, Accent Sensitive(区分大小写且区分重音)
总结一下
- 建库时用
dminit指定好charset,排序规则一般跟随字符集自动设置。 - 建库后不能改字符集,只能在表、列、查询时用
COLLATE临时改变排序方式。 - 中文项目建议用
GB18030,国际项目用UTF-8。 - 排序规则合理选,能显著提升查询正确性和性能。





苏公网安备32021302001419号