oracle数据库中多个null值存在时怎样排序

oracle数据库中多个null值存在时怎样排序,第1张

排序要看用什么字段排序,可以单个字段,也可以多个字段,这些与存在值是否为null无关。

如下列数据

id

name

class

1

a

1

2

b

null

3

c

null

现在要按id和class排序,其中id为主要排序字段,class为次要排序字段

可写如下语句

select from 表名 order by id,class

有以下几个方法,供您参考。

1、对于提交(最后一次 *** 作commit了)的话可以查询那个提交段SELECT

列名1,列名2FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;查出来的第一条就是最后改变的数据

2、如果表里面有序列或固定的排序字段可按倒排序后取第一条where rownum<2 order by 排序字段 desc

3、还有另外一种办法就是利用ORACLE伪列rowid

select from tbl t1 where t1rowid=(select max(rowid) from tbl t2)

4、在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具。

这是几项常用的方法,希望我的回答能给您带来帮助。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

测试中文排序的数据库版本

SQL> select from v$version;

BANNER

Oracle Database g Enterprise Edition Release Production

PL/SQL Release Production

CORE          Production

TNS for Linux: Version Production

NLSRTL Version Production

创建测试表

create table player (id number( ) name varchar ( ));

检查字符集配置

确认数据库字符集 american_america AL UTF

SQL>  select  name value$  from  props$;

NAME                           VALUE$

DICT BASE                     

DEFAULT_TEMP_TABLESPACE        TEMP

DEFAULT_PERMANENT_TABLESPACE   USERS

DEFAULT_EDITION                ORA$BASE

Flashback Timestamp TimeZone   GMT

TDE_MASTER_KEY_ID

DEFAULT_TBS_TYPE               SMALLFILE

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_NUMERIC_CHARACTERS        

NLS_CHARACTERSET               AL UTF

NLS_CALENDAR                   GREGORIAN

NLS_DATE_FORMAT                DD MON RR

NLS_DATE_LANGUAGE              AMERICAN

NLS_SORT                       BINARY

NLS_TIME_FORMAT                HH MI SSXFF AM

NLS_TIMESTAMP_FORMAT           DD MON RR HH MI SSXFF AM

NLS_TIME_TZ_FORMAT             HH MI SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT        DD MON RR HH MI SSXFF AM TZR

NLS_DUAL_CURRENCY              $

NLS_P                       BINARY

NLS_LENGTH_SEMANTICS           BYTE

NLS_NCHAR_CONV_EXCP            FALSE

NLS_NCHAR_CHARACTERSET         AL UTF

NLS_RDBMS_VERSION             

GLOBAL_DB_NAME                 ORA G

EXPORT_VIEWS_VERSION          

WORKLOAD_CAPTURE_MODE

WORKLOAD_REPLAY_MODE

DBTIMEZONE                     :

rows selected

SQL>

深入确认字符集

SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET

DECODE(TYPE#

DECODE(CHARSETFORM VARCHAR NVARCHAR UNKOWN )

DECODE(CHARSETFORM VARCHAR NCHAR VARYING UNKOWN )

DECODE(CHARSETFORM CHAR NCHAR UNKOWN )

DECODE(CHARSETFORM CLOB NCLOB UNKOWN )) TYPES_USED_IN

FROM SYS COL$

WHERE CHARSETFORM IN ( )

AND TYPE# IN ( );

确认 *** 作系统字符集设置

[ora g@bj ~]$ export NLS_LANG=american_america al utf

填写测试数据

SQL> insert into player values ( 下午啦 );

row created

SQL> insert into player values ( 八千米死亡线 );

SQL> set pagesize

SQL>  select from player;

ID NAME

中文

中文拼音

笔画输入法

测试啊

下午啦

八千米死亡线

rows selected

SQL>

  开始测试 发现三个查询语句返回的结果一致

SQL> select from player order by    nlssort(name NLS_SORT=SCHINESE_RADICAL_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

SQL> select from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

SQL> select from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );

ID NAME

笔画输入法

中文

下午啦

中文拼音

测试啊

八千米死亡线

rows selected

囧 疑似碰上bug 切换到 gR 下看看

SQL> select from v$version;

BANNER

Oracle Database g Enterprise Edition Release Prod

PL/SQL Release Production

CORE        Production

TNS for Linux: Version Production

NLSRTL Version Production

SQL> select from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );

ID NAME

八千米死亡线

笔画输入法

测试啊

下午啦

中文

中文拼音

rows selected

SQL> select from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );

ID NAME

八千米死亡线

下午啦

中文

中文拼音

测试啊

笔画输入法

测试服务器

rows selected

SQL> select from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );

ID NAME

下午啦

中文

中文拼音

八千米死亡线

测试啊

笔画输入法

测试服务器

rows selected

SQL>

这个结果似乎比较符合预期结果

NLS_SORT=SCHINESE_RADICAL_M  按照部首排序

NLS_SORT=SCHINESE_STROKE_M 按照笔画排序

lishixinzhi/Article/program/Oracle/201311/17664

以上就是关于oracle数据库中多个null值存在时怎样排序全部的内容,包括:oracle数据库中多个null值存在时怎样排序、如何在oracle数据库中查找最后一条插入的数据、Oracle中的中文排序方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9651146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存