oracle数据库中文汉字排序

oracle数据库中文汉字排序

今天需要按oracle数据库中某个表的某个中文字段进行排序,本来感觉挺简单的一个东西,不就是一个order by嘛,可是写完了发现拍的并不对,一时间感到不可思议,又查询,发现果然有这个问题,经过查资料发现,Oracle对中文的排序是按照ASC码的值进行排序的,后来又经过查阅资料发现了一个他的函数

1、按照拼音排序: 

select * from your_table_name t order by nlssort(t.ordered_column_name,‘NLS_SORT=SCHINESE_PINYIN_M‘) 

2、按照笔画数排序: 

select * from your_table_name t order by nlssort(t.ordered_column_name,‘NLS_SORT=SCHINESE_STROKE_M‘) 

3、按照偏旁部首排序: 

select * from your_table_name t order by nlssort(t.ordered_column_name,‘NLS_SORT=SCHINESE_RADICAL_M‘) 

解释:SCHINESE_PINYIN_M====>Simplified Chinese Pinyin Mode 
时间: 2024-10-16 04:38:24

oracle数据库中文汉字排序的相关文章

Oracle一个中文汉字占用几个字节

Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定   查看oracle server端字符集 select userenv('language') from dual; 如果显示如下,一个汉字占用两个字节 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如果显示如下,一个汉字占用三个字节 SIMPLIFIED CHINESE_CHINA.AL32UTF8 可以用以下语句查询一个汉字占用的字节长度 select lengthb('你') from d

Oracle数据库中文乱码问题

最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle乱码问题中的一个,但是我决定将这个乱码问题整理清楚(不整清楚,就觉得身边有个定时炸弹,怕下次整数据库的时候会突然又爆炸). 解决这个问题的关键在于理解字符集的概念,所以在正文开始之前,有必要先提一下字符集的相关知识!(这部分知识,对于解决j2ee中文参数传递过程中出现的乱码,也非常具有参考意义) 一

cx_Oracle读取Oracle数据库中文乱码问题解决

在使用cx_Oracle模块读取Oracle数据库中的中文记录时,返回值皆为?,后google得此佳文,遂问题得以解决,特此记之. Oracle数据库版本是10g,字符集是AL32UTF8. 编写的python脚本中需要加入如下几句: import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 这样可以保证select出来的中文显示没有问题. 要能够正常的insert和update中文,还需要指定python源文件的字符集

java排序(1)——根据中文汉字排序

工作中,我们经常会遇到需要进行各种排序的需求.现在就对于在工作中遇到的“根据名称进行排序”进行归纳总结. 1 package compare; 2 3 /** 4 * @Todo 要排序的实体类 5 * @author Wu Yuwei 6 * @date 2019年2月25日下午10:47:02 7 */ 8 public class CompareDao implements Comparable<CompareDao>{ 9 10 private String name; 11 priv

PL/sql developer连接数据库的问题以及oracle数据库中文乱码的问题

今天第二次配置PL/sql developer,表示很蛋疼,昨天因为动了一个东西然后莫名其妙的就再也连接不了数据库,总是显示各种错误,我动的东西是因为中文会显示乱码,(因为我是用32位的PL/sql developer连接64位的orcale,所以参照网上的教程在添加了一个环境变量名字是NLS_LANG,值是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,然后把注册表下面的这个名字的值也改成了这一样的,然后我再次登陆就显示各种错误了,连改回去都不行,还尝试过重新创建数据库,最

oracle数据库中文乱码解决办法

登录数据库显示乱码 原因是数据库的客户端和服务端的字符集不同 查出服务端的字符集 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.AL32UTF8 客户端字符集的构成与设定.客户端的字符集是由当前用户的环境变量NLS_LANG设定的. 故在环境变量中设定与服务器端相

Oracle数据库--过滤和排序

过滤和排序 1. 在查询中过滤行 过滤:使用WHERE子句将不满足条件的行过滤掉 where子句紧跟From子句 1)查询10号部门的员工 SQL> select * 2 from emp 3 where deptno=10; 2)字符串大小写敏感      查询名叫KING的员工 SQL> select * 2 from emp 3* where ename='KING' SQL> / 3)日期格式敏感     查询入职日期是17-11月-81的员工 SQL> select *

ORACLE数据库性能优化之--&gt;内存磁盘

1,内存结构优化概述 1.1 缓冲区 影响数据库运行性能的缓冲区包括可以共享的SGA和服务器进程私有的pga两大类,其中sga又包括共享池.大型池.java池.数据缓冲区.流池.redo log缓冲区. 1.2 自动内存管理 oracle一般采用自动内存管理来管理系统内存,由oracle自动管理和调整数据库实例的内存大小.在自动管理模式下,首先对初始化参数MEMORY_TARGET(目标内存大小)和MEMORY_MAX_TARGET(最大内存大小)进行配置,数据库调整目标内存大小,根据需要不断重

oracle针对中文排序

在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RADICAL_M 按中文笔画进行排序:SCHINESE_STROKE_M 而oracle 9i是对中文的排序是默认按拼音排序(并不是指NLS_SORT = SCHINESE_PINYIN_M,而是说SQL中不指定NLS_SORT时对中文列排序时默认按拼音)的,跟之前的2进制编码排序有所不同.具体用法如