`

NLS_SORT设置

阅读更多

Oracle数据库中文拼音排序问题,NLS_SORT设置

Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。

1、设置NLS_SORT参数值

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

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

SCHINESE_PINYIN_M 按照拼音排序

BINARY_CI 忽略大小写的排序

2、Session级别的设置,修改ORACLE字段的默认排序方式:

按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;

按笔画:alter session set nls_sort = SCHINESE_STROKE_M;

按偏旁:alter session set nls_sort = SCHINESE_RADICAL_M;

忽略大小写:alter session set nls_sort = BINARY_CI

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

按照笔划排序

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

忽略大小写 

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

4、修改系统参数(数据库所在操作系统):

set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)

setenv NLS_SORT SCHINESE_RADICAL_M (csh)

HKLC\SOFTWARE\ORACLE\home0\NLS_SORT (win注册表)

5、设置查询时忽略大小写方法:

alter session set nls_sort='BINARY_CI';

alter session set nls_comp='LINGUISTIC';

 

Oracle 官方说明

NLS_SORT NLS_SORT specifies the collating sequence for ORDER BY queries. NLS_COMP NLS_COMP specifies the collation behavior of the database session.

 

 

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.

 

 

Property

Description

Parameter type

String

Syntax

NLS_COMP = { BINARY | LINGUISTIC | ANSI }

Default value

BINARY

Modifiable

ALTER SESSION

Basic

No

 

Values:

  • BINARY

Normally, comparisons in the WHERE clause and in PL/SQL blocks is binary unless you specify the NLSSORT function.

  • LINGUISTIC

Comparisons for all SQL operations in the WHERE clause and in PL/SQL blocks should use the linguistic sort specified in the NLS_SORT parameter. To improve the performance, you can also define a linguistic index on the column for which you want linguistic comparisons.

  • ANSI

A setting of ANSI is for backwards compatibility; in general, you should set NLS_COMP to LINGUISTIC

 

符合NLS_SORT所有的值请在v$nls_valid_values视图中找

分享到:
评论

相关推荐

    oracle-sort-order-by.rar_oracle_sort - order

    在Oracle中,可以通过设置NLS_SORT参数为JAPANESE_JIS_X0208_1990或类似值来启用JIS排序。 3. **Unicode排序** Unicode排序规则遵循Unicode Collation Algorithm (UCA),它为全球所有语言提供了一致的排序方式。在...

    oracle__汉字排序

    在Oracle中,可以通过设置`NLS_SORT`参数来控制汉字的排序规则。该参数支持三种主要的汉字排序方式:拼音排序、笔画排序和部首排序。 1. **拼音排序**:通过设置`NLS_SORT=SCHINESE_PINYIN_M`来进行拼音排序。 - ...

    oracle排序方法拼音,部首,笔画

    此外,还可以通过设置会话级或系统级的`NLS_SORT`参数来自定义排序规则。 #### 六、总结 综上所述,在Oracle数据库中,通过使用`NLS_SORT`参数,可以方便地实现对中文数据按照拼音、部首或笔画进行排序的功能。这...

    ora-01460 错误原因分析

    | NLS_SORT | BINARY | | NLS_TIME_FORMAT | HH.MI.SSXFFAM | | NLS_TIMESTAMP_FMT | DD-MON-RRHH.MI.SSXFFAM | | NLS_TIME_TZ_FMT | HH.MI.SSXFFAMTZR | | NLS_TS_TZ_FMT | DD-MON-RRHH.MI.SSXFFAMTZR | | NLS_DUAL...

    Oracle数据库10g-支持全球化特性的平台-Powe.pptx

    这些函数兼容POSIX ERE,能在260个字符集中工作,包括Unicode和转换敏感的字符集,并根据NLS_SORT设置进行语言敏感的匹配。 Oracle 10g还引入了语言和字符集检测技术,如LCSSCAN和CSSCAN,它们可以识别文本的字符集...

    Oracle数据库10g支持全球化特性的平台Powe.pptx

    通过设置NLS_SORT会话参数,可以指定不分大小写或不分重音的排序。例如,`ALTER SESSION SET NLS_SORT=BINARY_CI;` 将会启用不分大小写的排序。 正则表达式在Oracle 10g中也得到了增强,提供本地支持,允许在SQL和...

    oracle数据库汉字首字排序

    - `sort_rule`:指定排序规则的参数,如`'NLS_SORT=SCHINESE_PINYIN_M'`表示按照简体中文的拼音顺序进行排序,并且区分大小写(M表示区分大小写)。 **示例代码**: ```sql SELECT DEPTID, DEPTNAME FROM TDEPT ...

    对Oracle 排序中的几种常用排序的介绍

    3. **按笔画排序**:对于按照汉字的笔画数排序,可以使用`NLS_SORT`参数设置为`SCHINESE_RADICAL_M`: ```sql select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_RADICAL_M'); ``` 4. **获取...

    oracle指定排序的方法详解

    在Windows系统中,NLS_SORT参数可以通过修改注册表来设置,具体是在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\home0\NLS_SORT键值中进行修改。 需要注意的是,由于OCR扫描文档的过程可能存在识别错误或漏识别,以上内容...

    ORACLE常用函数总结

    - 示例:`SELECT NLS_INITCAP('ab cde') "test", NLS_INITCAP('a b c d e', 'nls_sort= SCHINESE_PINYIN_M') "test1" FROM dual;` 11. NLS_LOWER(chr, ['nls_param'])函数: - 作用:根据nls_param设定的排序方式...

    oracle函数大全

    - `SELECT NLS_INITCAP('zxt poi', 'NLS_SORT=Xdutch') FROM DUAL` 返回:'Zxt Poi' 6. NLS_LOWER函数: 语法:NLS_LOWER(string[, nlsparams]) 功能:将字符串中的所有字母转换为小写,非字母字符保持不变。...

    oracl几个函数

    在Oracle 9i及之后的版本中,新增了基于拼音、部首和笔画的排序功能,通过设置`NLS_SORT`参数来实现。 - `SCHINESE_RADICAL_M`:按照部首(第一顺序)、笔划(第二顺序)进行排序。 - `SCHINESE_STROKE_M`:按照...

    Oracle客户端PL/SQL 中文乱码解决

    可以通过`ALTER SESSION SET NLS_SORT=BINARY_CI`和`ALTER SESSION SET NLS_COMP=LINGUISTIC`来调整排序规则,使比较时不考虑字符集差异。 通过以上步骤,大部分情况下可以解决Oracle客户端PL/SQL的中文乱码问题。...

    oracle数据库中汉字排序方法

    为了实现这一目标,Oracle提供了一系列内置函数和参数设置,其中最重要的是`NLS_SORT`参数及其相关的排序类型。 #### 二、NLS_SORT参数详解 `NLS_SORT`参数用于指定排序规则。在Oracle数据库中,可以通过以下三种...

    oracle字符函数.pdf

    例如,`NLS_LOWER('ABC')`返回'abc',而`NLS_LOWER('ABC', 'nls_sort=CHINESE_PINYIN_M')`可能会基于拼音将中文字符转换为小写。 12. NLSSORT(col, [nls_param])函数:此函数用于根据指定的NLS参数对字符串col进行...

    Oracle内置SQL函数-分类整理大全(doc)

    SELECT NLS_INITCAP('hello world', 'NLS_SORT=GERMAN') FROM DUAL; -- 假设设置了德国排序 ``` ##### 6. **NLS_LOWER/NLS_UPPER** **语法:** `NLS_LOWER(string[, nlsparams])` 和 `NLS_UPPER(string[, nlsparams...

    中文排序方式:拼音,笔画,边傍

    NLSSORT(name, 'NLS_SORT=SCHINESE_PINYIN_M'); ``` **结果:** ``` NAME ---------------- 不 就 仁 一 忠 众 周 作 ``` 在这个例子中,我们可以看到“不”排在第一位,接着是“就”,然后是“仁”等,这样的...

    Oracle内置SQL函数-分类整理大全

    例如,NLS_INITCAP('luo jia you', 'NLS_SORT=Chinese')将根据中文排序规则调整大小写。 8. REPLACE函数:REPLACE(string, search_str, replace_str)在string中找到所有的search_str子串,并用replace_str替换。...

    oracle内置函数

    SELECT NLS_INITCAP('hello world', 'NLS_SORT=GERMAN') FROM DUAL; -- 输出: 'Hello World' ``` ##### 6. **NLS_LOWER** - **语法**: `NLS_LOWER(string[, nlsparams])` - **功能**: 返回字符串中的所有字母...

Global site tag (gtag.js) - Google Analytics