zoukankan      html  css  js  c++  java
  • Oracle nls_sort和nlssort 排序功能介绍

    zt http://blog.sina.com.cn/s/blog_5fd47cff0100xy8p.html

    (1)ALTER SESSION SET NLS_SORT=''; 排序影响整个会话

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

     

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

     

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

     

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

     

      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')

     

     

    (2)又如在视图中查询获取道路列表:

    sSql = string.Format("select distinct({0}) from {1} order by nlssort({0},'NLS_SORT=SCHINESE_PINYIN_M')", sFieldDL, sViewDL);

     

    (3)又如

    一个表中的数据是这样的:

    PROJECTNO

    -----------------------

    钦市PC2010-5

    钦市PC2011-6

    钦市PC2011-40

    钦南PC2011-5

    钦南GC2011-5

    钦市PC2011-5(还有很多)数据前2个字是市区名,后面的是文件名“-”后面的是第几号文件,我想知道如何用SQL语句将他们升序排序,需要先排列市区名,市区名相同了在升序排列后面的文件名,文件名相同了在排列后面的文件编号名。

    注意:单单用select projectno from dual order by projectno asc 是不能实现的。

    可使用

    select projectno from dual order by substring(projectno ,1,2) asc ,substring(projectno ,3,6) asc ,substring(projectno ,9,2) asc
  • 相关阅读:
    luogu P2685 [USACO07OPEN]抓牛Catch That Cow
    codevs 2021 中庸之道
    1018. 锤子剪刀布 (20)
    1017. A除以B (20)
    1016. 部分A+B (15)
    1013. 数素数 (20)
    1011. A+B和C (15)
    《C语言程序设计(第四版)》阅读心得(三)
    《C语言程序设计(第四版)》阅读心得(二)
    1008. 数组元素循环右移问题 (20)
  • 原文地址:https://www.cnblogs.com/rattersnake/p/3295984.html
Copyright © 2011-2022 走看看