KingbaseESV8R6汉字首字母排序

news/发布时间2024/5/19 1:56:58

目的

本文目的实现汉字首字母排序。

排序规则和字符集的关系如下。

select sys_encoding_to_char(collencoding) as encoding,collname,collcollate,collctype from sys_collation ;

按照UTF8字符集匹配中文排序规则如下。

select collcollate from sys_collation where sys_encoding_to_char(collencoding)='UTF8' and collcollate like '%zh%' group by collcollate;

查看test数据库当前字符集为默认字符集UTF8 ,Collate为 en_US.UTF-8,en_US表示英文语言环境,而我们的目的是按照中文排序。

TEST=# \lList of databasesName    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges
-----------+--------+----------+-------------+-------------+-------------------security  | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 |template0 | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/system        +|        |          |             |             | system=CTc/systemtemplate1 | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/system        +|        |          |             |             | system=CTc/systemtest      | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 |(7 rows)

测试

test数据库中测试,指定排序为c无法在汉字字母中识别。

TEST=# \d t3Table "public.t3"Column |            Type            | Collation | Nullable | Default
--------+----------------------------+-----------+----------+---------id     | integer                    |           |          |name   | character varying(20 char) |           |          |TEST=# select name from t3 order by name;name
--------不同】不好偶尔啊地平地方
(6 rows)TEST=# select name from t3 order by name collate "c";name
--------不同】不好偶尔啊地平地方
(6 rows)

在sql后面只需要指定语言环境zh_CN,可实现按汉字首字母排序。

TEST=# select name from t3 order by name collate "zh_CN";name
--------啊不好不同】地方地平偶尔
(6 rows)

还可以修改列的collate

但这会导致rewrite table,注意大表请谨慎操作。会耗时很久。

test=# alter table t3 alter name type character varying(20 char) collate "zh_CN";
ALTER TABLE
test=#
test=# select name from t3 order by name;name
--------啊不好不同】地方地平偶尔
(6 rows)

GBK字符集数据库环境测试

test1数据库下做测试

TEST=# \l+List of databasesName    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges |  Size  | Tablespace  |                Description-----------+--------+----------+-------------+-------------+-------------------+--------+-------------+----------------------------------
----------security  | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 13 MB  | sys_default |template0 | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/system        +| 13 MB  | sys_default | unmodifiable empty database|        |          |             |             | system=CTc/system |        |             |template1 | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/system        +| 13 MB  | sys_default | default template for new database|        |          |             |             | system=CTc/system |        |             |test      | system | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 824 MB | sys_default | default administrative connectiontest1     | system | GBK      | zh_CN.GBK   | zh_CN.GBK   |                   | 13 MB  | sys_default ||
(7 rows)TEST=# \c test1 system
You are now connected to database "test1" as user "system".test1=# \d t1Table "public.t1"Column | Type | Collation | Nullable | Default
--------+------+-----------+----------+---------name   | text |           |          |

因为test1数据库默认排序规则是zh_CN.GBK,所以无需在sql中指定collate即可完成汉字首字母排序。

test1=# select * from t1 order by name;name
------北大的个有满五模拟哦平
(6 rows)

总结

如果字符集和collate不相匹配,我们可以在sql中使用collate "zh_CN",或者alter table 修改列的collate,实现汉字首字母排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/22008327.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

4-微信小程序 相关知识点代码示例

基于上篇文章的理论文本的介绍来进行相关代码的演示和例子 该篇文章需注意,在微信小程序的使用时,应先熟悉里面每个文件的作用,在第二篇文章有详细记载,一般用的比较多的是wxml、wxss、ws.js 对应网站的开发就是html、css、js、页面的内容及框架、页面的美化、页面的基本功…

服务器

ARM64、x86基础知识和区别 今天小编就带你深入了解CPU的这两大架构:ARM和X86。ARM ARM64是CPU构架的一种,通常用于手机、平板等CPU,目前笔记本电脑也会采用ARM64构架的CPU。 x86 x86是CPU构架的一种,通常用于笔记本电脑、台式电脑、服务器、超级计算机。作者:物非0人非 链…

组件功能

可视化 —— watch

米联客MLK-CM04-9EG-15EG AMD MPSOC核心模块硬件手册

1 整体概述 MLK-04-9EG/15EG-1156核心模块是米联客电子Zynq UltraScale+系列开发平台的全新高端产品。其核心模块集成电源管理:0.85V核心电源,最大输出48A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项目开发。其应用…

五个月,秒杀,38个大的篇章,126+篇文章、视频、小册,150+源码分支,完美收官!

大家好,我是冰河~~ 经过四个多月的坚持,《Seckill秒杀系统》终于接近尾声了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《Seckill秒杀系统》专栏中,学到了不少知识和技术。接下来,我们就一起对《Seckill秒杀系统》专栏做个总结。 一、总体概述 在《Seckill秒杀系…

基于 ActionFilters 的限流库DotNetRateLimiter使用

前言 在构建API项目时,有时出于安全考虑,防止访问用户恶意攻击,希望限制此用户ip地址的请求次数,减轻拒绝服务攻击可能性,也称作限流。接下来,我们就来学习开源库DotNetRateLimiter 如何轻松实现限流。 项目使用配置 安装Nuget包 在新建立的WebAPI项目中,通过Nuget包管理…