重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、创建测试表,
创新互联为客户提供专业的成都做网站、网站建设、外贸营销网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站制作等网站方面业务。
create table test_name(id varchar2(20),name varchar2(20), birthday date);
2、插入测试数据;
insert into test_name values(1, 'aa', to_date('1990-01-02 10:10:50','yyyy-mm-dd hh24:mi:ss'));
insert into test_name values(2, 'bb', to_date('1987-02-02 10:01:25','yyyy-mm-dd hh24:mi:ss'));
insert into test_name values(3, 'cc', to_date('2000-01-25 09:01:25','yyyy-mm-dd hh24:mi:ss'));
commit;
3、编写语句,根据birthday字段进行升序;
select * from test_name t order by birthday;
4、编写语句,根据birthday字段进行降序;
select * from test_name t order by birthday desc;
1、首先在oracle建立数据表的时候,对表的命名有以下规范:以字母开头表名长度不能超过30个字符,不能使用oracle保留关键字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接报错的。如下图使用了 *。
3、在建立表的时候,数字也是不能使用表名的开始的。
4、但如果使用双引号对表名进行规范的话,是可以建立以数字或者包含特殊字符的表名的。
5、过这样建立的表名,在查询数据的时候是非常麻烦的,查询时也要加双引号。而且这样建立的表名,在项目运行的过程中也非常容易造成各种麻烦,所以尽量不要使用。
你好,排序一般有两种
1:字段排序:
字段排序有升序和降序,分别是 order by seq asc和order by seq desc
比如seq字段值是1,3,5,2,7,6,4。那么排序结果是1,2,3,4,5,6,7和7,6,5,4,3,2,1。
2:伪列排序:
还有就是非正常排序,我姑且叫做伪列排序,比如你想按照1,3,5,7,2,4,6排序。那么在sql上动动文章。
解决方式如下:
定义一个排序变量,通过运算seq将排序号给排序变量。
如 select seq , case seq when 1 then 1 else when 3 then 2 else when 5 then 3 else when 7 then 4 else when 2 then 5 else when 4 then 6 else when 6 then 7 end seq1 from mad order by seq1 asc (或者desc)
sql中的那个长长的case ...when.. else 语句就是将seq进行转换,1变成1,3变成2等等,最后赋值给seq1伪字段,这样就可以将1,3,5,7,2,4,6的数值转换成了对应的1,2,3,4,5,6,7,升序或降序都可以。
但是这样做,少量数据可以,对大数据时会影响效率的,不知道你为什么要有这样要求。
如果对case when 语法不清楚可以百度查查。
最后,希望能帮到你。
oracle按照指定顺序进行排序
实验如下:
1.新建表
CREATE TABLE BR_DICT(
ID number PRIMARY KEY NOT NULL,
D_ITEM VARCHAR2(32),
D_VALUE VARCHAR2(32),
D_TYPE VARCHAR2(32),
D_SORT number
)
2.插入数据
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(10, '10', '测试1', '', 0);
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(11, '11', '测试2', '', 1);
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(12, '12', '测试3', '', 2);
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(13, '13', '测试4', '', 3);
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(14, '14', '测试5', '', 4);
insert into br_dict(id, d_item,d_value,d_type,d_sort) values
(15, '15', '测试6', '', 5);
3.两种查询方式
a.instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置来自定义排序方式
select * from br_dict d where d.d_value like '%测试%' order by instr( '3,1,2,0,5,4',rtrim(cast(d_sort as nchar)));
b.运行decode定义某个字符的排序位置类似的实现排序方式
select * from br_dict d where d.d_value like '%测试%' order by decode(d_sort, '3', '01', '2', '02', '1', '03', '0', '04', '5', '05', '4', '06');
Oracle的表列顺序在创建时候被定死了,你就死了这条心吧,或者重新建个表,然后把数据导过去
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、select 的字段;
8、使用order by对结果集进行排序。