精华内容
下载资源
问答
  • ORACLE 按中文 排序

    2017-03-29 10:08:00
    order by translate(t.factory,'一二三四五六七','1234567') 转载于:https://www.cnblogs.com/qq1988627/p/6638260.html

    order by translate(t.factory,'一二三四五六七','1234567') 

    转载于:https://www.cnblogs.com/qq1988627/p/6638260.html

    展开全文
  • oracle按中文排序——NLS_SORT视图v$nls_parameters参数字段NLS_SORT默认为binary但此时无法对中文进行排序如:with t as(select '北京' name from dual un...
    oracle按中文排序——NLS_SORT
    视图v$nls_parameters中参数字段NLS_SORT默认为binary
    但此时无法对中文进行排序如:
    with t as
    (
    select '北京' name from dual union all
    select '上海' from dual union all
    select '重庆' from dual

     select name from t order by name ;
     
     NAME
    --------------------------------------------------
    北京
    上海
    重庆
    不是按我想要的顺序排的,此时将nls_sort改成
    scott@ziling> alter session set nls_sort = SCHINESE_PINYIN_M;
    会话已更改。
    scott@ziling> select * from a order by name ;
    NAME
    --------------------------------------------------
    北京
    重庆
    上海
    scott@ziling> alter session set nls_sort = SCHINESE_STROKE_M;
    会话已更改。
    scott@ziling> select * from a order by name ;
    NAME
    --------------------------------------------------
    上海
    北京
    重庆
    nls_sort为SCHINESE_STROKE_M是按笔画排序!
    另:当nls_sort设置成除binary外的其它值时sql语句执行计划将走全表扫描,如果是binary将走索引排序,因为索引本来就是binary类型的。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25989950/viewspace-715875/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/25989950/viewspace-715875/

    展开全文
  • 最近项目过程碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接order by column...经查阅资料发现,对于oracle汉字排序的问题网上说法不一。有的说是根据二进制编码排序的,有的却说是根据...

    最近项目过程中碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接order by columnName。忽略了汉字排序的问题导致bug的出现。

    业务要求,按照excel中排序出来的结果。对于汉字excel默认是按照拼音排序的,那么问题来了,oracle对于汉字究竟是如何排序的?

    经查阅资料发现,对于oracle对汉字排序的问题网上说法不一。有的说是根据二进制编码排序的,有的却说是根据拼音排序的。

    自己试了试,肯定默认不是拼音排序。可能是二进制编码吧。

    说下具体怎么改,也是转载网上的一些方法。

    1、语句级别设置排序方式:

    //按照笔划排序

    select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');

    //按照部首排序

    select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');

    //按照拼音排序,此为系统的默认排序方式

    select * from dept order by nlssort(name,'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注册表);

    我这里只是用来语句级别的就可以了。

    回到系统默认排序的问题就是设置数据库的NLS_SORT 这个参数

    通过查看select * from nls_database_parameters; 数据库参数

    我的默认值为BINARY

    Oracle 官方说明:

    Property

    Description

    Parameter type

    String

    Syntax

    NLS_SORT = { BINARY | linguistic_definition }

    Default value

    Derived from NLS_LANGUAGE

    Modifiable

    ALTER SESSION

    Range of values

    BINARY or any valid linguistic definition name

    If the value is BINARY, then the collating sequence for ORDER BY queries is based on the numeric value of characters (a binary sort that requires less system overhead).

    If the value is a named linguistic sort, sorting is based on the order of the defined linguistic sort. Most (but not all) languages supported by the NLS_LANGUAGE parameter also support a linguistic sort with the same name.

    Note:

    Setting NLS_SORT to anything other than BINARY causes a sort to use a full table scan, regardless of the path chosen by the optimizer. BINARY is the exception because indexes are built according to a binary order of keys. Thus the optimizer can use an index to satisfy the ORDER BY clause when NLS_SORT is set to BINARY. If NLS_SORT is set to any linguistic sort, the optimizer must include a full table scan and a full sort in the execution plan.

    You must use the NLS_SORT operator with comparison operations if you want the linguistic sort behavior.

    BINARY是二进制编码排序的设定。

    展开全文
  • 关键字: nlssort, 拼音排序, 笔划, 部首Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值1. SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序...

    关键字: nlssort, 拼音排序, 笔划, 部首

    Oracle9i之前,中文是按照二进制编码进行排序的。

    在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值

    1. SCHINESE_RADICAL_M   按照部首(第一顺序)、笔划(第二顺序)排序

    2. SCHINESE_STROKE_M   按照笔划(第一顺序)、部首(第二顺序)排序

    3. SCHINESE_PINYIN_M   按照拼音排序

    oracle9i中新增了按照拼音、部首、笔画排序功能

    用法示例:

    拼音

    SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,’NLS_SORT = SCHINESE_PINYIN_M’)

    笔划

    SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,’NLS_SORT = SCHINESE_STROKE_M’)

    部首

    SELECT * FROM TEAM ORDER BY NLSSORT(排序字段,’NLS_SORT = SCHINESE_RADICAL_M’)

    如果需要排序影响整个会话,可以作如下设置:

    ALTER SESSION SET NLS_SORT=’对应方式’;

    $:order by nlssort(g.doc_name,’NLS_SORT=SCHINESE_PINYIN_M’) asc

    展开全文
  • oracle数据库中文汉字排序 今天需要按oracle数据库某个表的某个中文字段进行排序,本来感觉挺简单的一个东西,不就是一个order by嘛,可是写完了发现拍的并不对,一时间感到不可思议,又查询,发现果然有这个...
  • oracle汉字排序

    2017-08-01 14:51:49
    汉字排序须综合考虑数据库字符集、NLS_SORT字符集查看数据库字符集:SELECT userenv('language') FROM dual;如果字符集为ZHS16GBK/ZH16GBK,那么使用order by默认是按照汉字的拼音顺序进行排序的;如果为其他(如UTF...
  • oracle中,利用nlssort函数,对汉字排序拼音顺序排序 [code="java"] order by nlssort(t1.NAME, 'NLS_SORT=SCHINESE_PINYIN_M') [/code]
  • oracle汉字排序

    2018-01-26 23:07:22
    最近项目过程碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接order by columnName。忽略了汉字排序的问题导致...经查阅资料发现,对于oracle汉字排序的问题网上说法不一。有的说是根据二进
  • oracle针对中文排序

    2019-10-02 23:41:31
    oracle 9i之前,对中文排序,是默认2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RADICAL_M 按中文笔画进行排序:SCHINESE_STROKE_...
  • Oracle汉字排序问题

    2020-06-24 15:17:15
    oracle在9i之前是对汉字排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字排序方式有了以下三种方式: 1、使用拼音排序 NLS_SORT=SCHINESE_PINYIN_M 2、使用笔画排序 NLS_SORT=...
  • oracle__汉字排序

    2013-05-02 14:58:35
    oracle__汉字排序
  • oracle数据库中文排序

    2013-03-28 12:25:12
    oracle9i新增了按照拼音、部首、笔画排序功能。 1、设置NLS_SORT参数值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)...
  • 转:oracle按拼音排序

    2011-01-21 11:12:58
    找了相关的一些资料,都说的不是很清楚,自己也研究了下,终于搞明白了,希望对大家有帮助。 需要说明的是下面的方法需要ORACLE...在oracle9i新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值 SCHINESE_R...
  • 关于oracle汉字排序

    千次阅读 2016-10-14 17:20:33
    最近项目过程碰到对于数据进行排序按照升序排序需求。这需求貌似很简单,我没多想直接order by columnName。...经查阅资料发现,对于oracle汉字排序的问题网上说法不一。有的说是根据二进制编码排序的,...
  • Oracle 汉字排序

    2018-08-19 00:08:30
    --Oracle 汉字排序  ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M') --按照拼音排序 ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_RADICAL_M') --按照部首排序 ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_...
  • oracle 中文排序

    2017-10-25 10:04:17
    Oracle9i之前,中文是按照二进制编码进行排序的。    在oracle9i新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值    SCHINESE_RADICAL_M按照部首(第一顺序)、笔划(第二顺序)排序    SCHINESE...
  • Oracle9i 新增了按照拼音、部首、笔画排序功能,在使用时一般都是拼音排序, 按照拼音排序: select * from [表名]order by nlssort([栏位名],'NLS_SORT=SCHINESE_PINYIN_M'); 按照笔画排序: select * from...
  • Oracle汉字排序问题

    千次阅读 2016-12-29 13:09:13
    使用拼音排序 select * from t1 order by nlssort(c1,'NLS_SORT=SCHINESE_PINYIN_M');使用笔画排序 select * from t1 order by nlssort(c1,'NLS_SORT=SCHINESE_STROKE_M');使用偏旁部首排序 select * from t1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,118
精华内容 12,847
关键字:

oracle按中文排序