首批通过分布式安全可靠测评,为关键业务系统打造
NLSSORT
更新时间:2026-06-15 12:25:56
描述
该函数根据显式或隐式参数指定的排序规则,返回字符排序键值(Sortkey)。
NLSSORT() 函数使用指定的排序规则生成排序键值,排序键是一个字节字符串,用于根据指定的排序规则对字符进行排序。
排序规则键的长度受参数 MAX_STRING_SIZE 的影响。如果 MAX_STRING_SIZE=EXTENDED,则返回值的最大长度为 32767 字节。如果排序规则键超出此限制,则函数将执行失败,并出现无法创建排序规则键的报错"unable to create the collation key"。
语法
NLSSORT(char [, 'nlsparam' ])
参数解释
| 参数 | 说明 |
|---|---|
| char | 该参数支持字面量,也支持表达式(包括列名)。 数据类型可以为 CHAR、VARCHAR2、NCHAR 或者 NVARCHAR2。如果输入的数据类型为CLOB,会做隐式转换。 |
| nlsparam | 指定排序规则。 nlsparam 的固定格式为 NLS_SORT = collation。collation 是指语言排序规则名称。 OceanBase 数据库于 V4.2 版本及以后,简体中文排序新支持基于 GB18030_2022 字符集的排序方式。对于中文字符集,目前支持如下 3 种简体中文的排序方式:
nlsparam,则此函数使用字符集默认排序规则。 |
示例
obclient> CREATE TABLE tbl1(PK INT, name VARCHAR(25));
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,'福克斯'),(2,'警察'),(3,'的士'),(4,'林肯'),(5,'亚利桑那州'),(6,'华盛顿'),
(7,'戴尔'),(10,'朗讯');
Query OK, 8 rows affected
Records: 8 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+-----------------+
| PK | NAME |
+------+-----------------+
| 1 | 福克斯 |
| 2 | 警察 |
| 3 | 的士 |
| 4 | 林肯 |
| 5 | 亚利桑那州 |
| 6 | 华盛顿 |
| 7 | 戴尔 |
| 10 | 朗讯 |
+------+-----------------+
8 rows in set
obclient> SELECT * FROM tbl1 ORDER BY NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN2_M');
+------+-----------------+
| PK | NAME |
+------+-----------------+
| 7 | 戴尔 |
| 3 | 的士 |
| 1 | 福克斯 |
| 6 | 华盛顿 |
| 2 | 警察 |
| 10 | 朗讯 |
| 4 | 林肯 |
| 5 | 亚利桑那州 |
+------+-----------------+
8 rows in set