可能重复:
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;