KingbaseESV8R6汉字首字母排序
目的
本文目的实现汉字首字母排序。
排序规则和字符集的关系如下。
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=# \l
List of databases
Name | 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/system
template1 | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(7 rows)
测试
test数据库中测试,指定排序为c无法在汉字字母中识别。
TEST=# \d t3
Table "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 databases
Name | 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 connection
test1 | 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 t1
Table "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,实现汉字首字母排序。
KingbaseESV8R6汉字首字母排序的更多相关文章
- oracle中检索结果汉字首字母排序详解
今天写需求,要求将结果按照成本中心首字母排序,平且空放在最前面. 进入正题: 1.使用oracle自带的函数: 按照首字母排序:nlssort(xxx,'NLS_SORT=SCHINESE_PINYI ...
- iOS中获取本地通讯录联系人以及汉字首字母排序
iOS中获取手机通讯录中的联系人信息: /*** 加载本地联系人*/ - (void)loadLocalContacts { //新建一个通讯录类 ABAddressBookRef addressBo ...
- js对汉字首字母排序
var city = ["北京","天津","上海","重庆","杭州"];city.sort(fu ...
- mysql根据汉字首字母排序[转]
select areaName from area order by convert(areaName USING gbk) COLLATE gbk_chinese_ci asc 说明 ...
- localeCompare按首字母排序汉字
sort() 方法用于对数组的元素进行排序. 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字.比较函数应该具有两个参数 a 和 b,其 ...
- mysql 中将汉字(中文)按照拼音首字母排序
因为数据库中可以设定表的编码格式,不同编码格式下,中文的排序有区别,下面分别介绍常用编码下的排序方法. 1.如果数据表的某字段的字符编码是 utf8_general_ci,排序写法: ORDER BY ...
- 联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。
package com.lixu.letterlistview; import java.util.ArrayList; import java.util.List; import org.apa ...
- 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。
package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...
- HashMap加入数据后,会自动根据首字母排序
1.Map<String, ArrayList<XX>> entityHashMap = new HashMap<>(); 然后增加一些数据,会发现根据String ...
- php获取汉字首字母
php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return ...
随机推荐
- 分发函数singledispatch
import functools @functools.singledispatch() def myfunc(arg): print("default myfunc({!r})" ...
- 求求你别再用OkHttp调用API接口了,快来试试这款HTTP客户端库吧
引言 在日常业务开发中,我们时常需要使用一些其他公司的服务,调用第三方系统的接口,这时就会涉及到网络请求,通常我们可以使用HttpClient,OkHttp等框架去完成网络请求.随着RESTful A ...
- 【Azure App Service】同一个App Service下创建多个测试站点的方式
问题描述 在一个App Service中,部署多个应用,每个应用相互独立,类似与IIS中在根目录下创建多个子应用的情况. 问题解答 可以的.通过App Service Configuration页面, ...
- 【Azure 媒体服务】记录一个简单的媒体视频上传到Media Service无法播放问题
问题描述 从本地上传到Azure Media Service Portal的视频,并且新增定位符后,无法播放.但是上传的其他视频是可以的.疑惑中!! 问题自查 自查发现,是视频的文件名中有个特殊符号. ...
- Nebula 在 Akulaku 智能风控的实践:图模型的训练与部署
本文整理自 Akulaku 反欺诈团队在 nMeetup·深圳场的演讲,B站视频见:https://www.bilibili.com/video/BV1nQ4y1B7Qd 这次主要来介绍下 Nebul ...
- Java MVC 模式
MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA ...
- STM32F103xC,xD,xE引脚定义
STM32F103xC,xD,xE引脚定义 由于在使用STM32系列芯片过程中发现互联网没有整理好的引脚定义,因此自己整理一份,方便以后查阅. GPIOA Pin 重新上电时的功能 默认功能 重映射 ...
- Lua中pair和ipair的区别
Lua中pair和ipair的区别? 二者都是Lua中内置的迭代器,可以对数组或table进行遍历. 在正常的数组或table的遍历中,二者没有区别. tableNormal={"this& ...
- 在Visual Studio 中使用git系列文章目录
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- [.Net]使用Soa库+Abp搭建微服务项目框架(三):项目改造
上一章我们说道,如果要使各模块之间解耦,使得各自独立成服务,首先要解除各个模块之间的引用关系. 还记得上一章我们的小项目吗 ?们回到之前的代码上来,当前的项目架构如下图: 这次的任务是将它改造成 ...