pl / sql string<与订单不同

时间:2012-02-07 13:55:11

标签: oracle plsql

  

可能重复:
  Why does Oracle's varchar sort order not match the behavior of varchar comparison?

我在pl / sql中进行字符串比较时遇到了一些麻烦。问题在于<和> pl / sql中的字符串比较与顺序不同。如果我跑:

select   x.* from 
  (select '4' y from dual
   union
   select 'N11' y from dual) x
order by x.y asc

我得到('N11','4'),但如果我跑:

select case when 'N11' < '4' then '1' else '0' end from dual

我得到'0'。我正在研究依赖于&lt;的pl / sql片段。和&gt;字符串运算符,用于比较与查询顺序相同的字符串。

我也尝试了

select * from tbl order by nlssort(col, 'NLS_COMP = ANSI')
select * from tbl order by nlssort(col, 'NLS_COMP = BINARY')

但这没有任何作用。

Oracle:Oracle数据库10g企业版10.2.0.1.0版

我错过了一些基本的东西,我怎样才能让这两个比较一起工作?

谢谢!

  • 感谢您快速回复,NLS_SORT和NLS_COMP不同,我通过使用以下方式获得了正确的比较:

    ALTER SESSION SET NLS_COMP = ANSI;

0 个答案:

没有答案