小编And*_*ndy的帖子

Oracle 排序 varchar2 列最后带有特殊字符

如何在 Oracle 中按我自己自定义的顺序对 Varchar2 或 NVarchar2 列进行排序。或者是否有任何现有的选项可以先放字母,然后是数字,然后是所有特殊字符。

我们的第一种方法是使用一个函数来手动将字符映射到数字。

select id, sorted_column
from some_table
order FN_SPECIAL_SORT_KEY(sorted_column,'asc')
Run Code Online (Sandbox Code Playgroud)

特殊的排序函数将每个字符映射到一个 2 位数字,返回值用于排序。这似乎只是非常昂贵的串联,感觉不对。

        for i in 1..length(sorted_text)
        loop
            v_result:=v_result ||  case substr(sorted_text,i,1)
                WHEN ' '   THEN 82 WHEN  '!'   THEN 81 WHEN '"'    THEN 80 WHEN  '#'   THEN 79 WHEN  '$'
                ..............
                WHEN 'u'   THEN 15 WHEN  'U'   THEN 15 WHEN  'v'   THEN 14 WHEN  'V'   THEN 14 WHEN  'w'   THEN 13 WHEN  'W'   THEN 13 WHEN  'x'
                ....
                else 90 end;
        end loop;
Run Code Online (Sandbox Code Playgroud)

我很难想出另一种方法。我想知道这种方法存在哪些问题。也许我们别无选择。 …

oracle oracle-10g order-by sorting

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

oracle ×1

oracle-10g ×1

order-by ×1

sorting ×1