Oracle排序排除null,oracle 排序(中文,null的处理)
oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式:
1、使用拼音排序 NLS_SORT=SCHINESE_PINYIN_M
2、使用笔画排序 NLS_SORT=SCHINESE_STROKE_M 第一顺序笔画,第二顺序部首;
3、使用偏旁部首排序 NLS_SORT=SCHINESE_RADICAL_M 第一顺序部首,第二顺序笔画;
这样,就可以在查询的时候,指定汉字的排序方式,设定方式可以分为以下三个级别:
1、语句级别设置排序方式:
按照笔划排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_STROKE_M');
按照部首排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_RADICAL_M');
按照拼音排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_PINYIN_M');
2、Session级别的设置,修改ORACLE字段的默认排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按笔画:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、修改系统参数(数据库所在操作系统):
set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLCSOFTWAREORACLEhome0NLS_SORT(win注册表);
网上有人说,oracle9i之后对于汉字的默认排序是拼音排序(SCHINESE_PINYIN_M),但是经过我的实际验证,发现不是,排序比较乱,也不知道是不是按照二进制编码进行排序的。
使用如下方法可以查看oracle的一些默认参数(注意标红的参数值):
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as system
SQL>
SQL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_NCHAR_CHARACTERSET UTF8
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_SORT BINARY
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_RDBMS_VERSION 10.2.0.1.0
Oracle排序排除null,oracle 排序(中文,null的处理)相关推荐
- oracle根据null排序,oracle 关于null值排序
在oracle中根据字段来desc排序的话null值可能会在数据的最前面.然而有时候我们查看数据的时候并不希望能够在前面看到这些null值的排序数据. 因此我查了一下: 1.排序的时候运用nvl(). ...
- oracle数据库的字段怎么排序规则,Oracle中文、数字混杂字段的排序
对Oracle中中文.数字混杂形式的字段进行排序的方法: 例如: orderbyNLSSORT(字段名,'NLS_SORT = SCHINESE_PINYIN_M'), to_number(trans ...
- oracle数据库查询并排序语录句,ORACLE系统查询话语
当前位置:我的异常网» 数据库 » ORACLE系统查询话语 ORACLE系统查询话语 www.myexceptions.net 网友分享于:2015-08-26 浏览:19次 ORACLE系统查 ...
- oracle or条件后 排序,WHERE条件和排序
一.条件简介 了解条件的一般形式 最普通的条件如下形式: gyj@OCM> Select * from t1 where name='gyj2'; ID NAME SALAR ...
- Oracle中的NULL(二、NULL详解)
2019独角兽企业重金招聘Python工程师标准>>> 说明:本篇文章是摘取自以下链接的Blog,但作者的这篇文章也是转载(非常感谢),我在记录的时候也有添加自己的思考. http: ...
- MySQL 如何实现 Oracle 的 row_number() over() 分组排序功能
文章目录 Oracle 的分组排序 MySQL 的分组排序 分析需求 创建模拟数据 SQL 实现 结果演示 Oracle 的分组排序 Oracle 的分组排序函数的语法格式如下: ROW_NUMBER ...
- oracle 分组过滤空值,oracle 空值处理,排序过滤
oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 有几种办法改变这种情况: (1)用 nvl 函数或decode 函数 将null ...
- oracle排序特别慢,Oracle 排序是件很有意思的事
以下的文章主要是对Oracle排序中的几种常用排序的介绍,你会发现Oracle 排序是一件很有意思的事,以下就是文章的具体内容的描述,以下是文章的具体介绍,望你浏览完以下的内容会有所收获. 按拼音排序 ...
- Oracle 设置 sort au,oracle数据库拼音排序及NLS_SORT配备[转]
oracle数据库拼音排序及NLS_SORT配置[转] Oracle9i之前,中文是按照二进制编码进行排序的.在oracle9i中新增了按照拼音.部首.笔画排序功能. 1.设置NLS_SORT参数值 ...
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...
最新文章
- gin构建包含模板的二进制文件
- solr的空间查询(查询地图周围坐标)
- 除了PS,还有它可以轻松实现图像处理!
- python 列表嵌套字典 添加修改删除_【Python】列表嵌套字典修改字典里面的一个值却把全部的值都修改了。...
- echart雷达图文字挤在一起_【数据可视化·图表篇】雷达图
- 没有基础的想转行学习Python怎么学
- vue 高德地图搜索功能_VUE中使用高德地图做轨迹添加功能,帮助轨迹展示
- HDOJ 2544(Dijkstra)
- 6 云计算系列之Nova安装与配置
- mdf转sql mysql_如何将SQL数据库.MDF格式的导入到mysql数据库里面啊
- GD32F130之DMA
- pm9screw php,PHP使用Screw把源代码加密
- 阿里hotfix热修复自动更新,了解一下。
- Rockchip RK3588 kernel dts解析之音频模块
- App中所有页面添加水印(支持单行和多行)
- 2022-2027年(新版)中国大米行业营销战略与供应情况预测报告
- 抑郁症患者突然心情变好,不一定是好事!
- DAG 图关键路径算法
- 什么是Promise,Promise的三种状态
- Eunomia: 让 ebpf 程序的分发和使用像网页和 web 服务一样自然