Oracle 中的汉字排序
无意中发现,Oracle11中的中文排序不对,没有按照正常的拼音顺序排序。 于是找到 http://www.cppblog.com/snowhill/articles/144442.html 原来Oracle针对汉字的排序还有三种方案。 缺省是Binary。(select * from nls_database_parameters;可以看到) 汉字的排序方案有: SCHINESE_STROKE_M 笔画 SCHINESE_RADICAL_M 偏旁 SCHINESE_PINYIN_M 拼音 只需要给操作系统的注册表 HKLC\SOFTWARE\ORACLE\home0\NLS_SORT 设置一下 nls_sort=SCHINESE_PINYIN_M。 所有排序就直接缺省按拼音排了。 后来发现改完之后可能会带来性能问题。 http://www.cnblogs.com/yanrongpi/archive/2008/04/11/1149144.html 缺省的索引都是按照Binary来设置的。 如果修改了nls_sort,还得建相应的索引。否则即使字段有索引了,排序仍然是全表扫描。 记录一下,备用。