Sorting 以文本作为编号的oracle排序 我的NLS设置: 简单测试查询: 实际结果: 预期结果: 问题:

Sorting 以文本作为编号的oracle排序 我的NLS设置: 简单测试查询: 实际结果: 预期结果: 问题:,sorting,oracle11gr2,nls-sort,nls-comp,Sorting,Oracle11gr2,Nls Sort,Nls Comp,是否有NLS设置可以帮助我获得期望的结果?我知道我可以按to_number(x)排序,或者更好的是,按lpad(x,5)排序,但在这种情况下并不好-我需要一个不需要更改查询的系统范围的解决方案 我尝试的是: 按nlssort排序(x,'nls_sort=binary') alter session set nls_sort='binary' 也许是一个有点奇怪的解决方案,但是 将表\u某物重命名为表\u其他 创建一个视图表,\u在表\u OTHER的顶部创建一个视图表,\u OTHER将把您的

是否有
NLS
设置可以帮助我获得期望的结果?我知道我可以按to_number(x)排序,或者更好的是,按lpad(x,5)排序,但在这种情况下并不好-我需要一个不需要更改查询的系统范围的解决方案

我尝试的是:
  • 按nlssort排序(x,'nls_sort=binary')
  • alter session set nls_sort='binary'

    • 也许是一个有点奇怪的解决方案,但是

    • 将表\u某物重命名为表\u其他
    • 创建一个视图表,\u在表\u OTHER的顶部创建一个视图表,\u OTHER将把您的有问题的字符串列添加到相同的列名
    • 如果表在应用程序范围内被修改,则在视图表上创建而不是触发器
    • 重新编译可能无效的包

    • 在修改大量记录时不会特别有效,不允许截断表,但可能会解决排序问题。

      为什么不删除撇号?@LajosVeres:)问题是我在DB中有数字作为文本。您尝试过nls_sort=binary吗?是,请参阅编辑后的问题。那么我认为没有任何全局内置配置用于您的目标。。。
      NLS_SORT    POLISH
      NLS_COMP    BINARY
      
      select * from (
        select '11117' as x from dual
        union
        select '12988' as x from dual
        union 
        select '14659' as x from dual
        union 
        select '1532' as x from dual
        union 
        select '18017' as x from dual
      ) order by x;
      
      x
      -----
      11117
      12988
      14659
      1532
      18017
      
      x
      -----
      1532
      11117
      12988
      14659
      18017