现在有个需求,要在sql语句中,对中文的“一”、“二”、“三”............“十”,进行排序,请谈谈思路?
收起Oracle中对中文的排序,可以指定四种排序方式,二进制(BINARY)、拼音(SCHINESE_PINYIN_M)、笔画(SCHINESE_STROKE_M)、部首(SCHINESE_RADICAL_M)。可以通过select NLS_SORT from NLS_SESSION_PARAMETERS查看默认排序方式;通过order by NLSSORT(字段名,'排序方式')选择排序方式。
如果需要按数字顺序排序,可以创建function将中文转换成阿拉伯数字,查询sql中调用function转换后进行排序。最简单、方便的方式,是表中额外添加一列,标明对应的阿拉伯数字,按照新列排序即可。