十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
oracle按照指定顺序进行排序
10年积累的网站建设、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有四平免费网站建设让你可以放心的选择与我们合作。
实验如下:
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');
可以通过 “order by 字段名 asc (desc)” 命令进行排序。
sql:select * from tablename order by id DESC;
用 DESC 表示按倒序排序(即:从大到小排序) ,用 ACS 表示按正序排序(即:从小到大排序)。
1、首先在oracle建立数据表的时候,对表的命名有以下规范:以字母开头表名长度不能超过30个字符,不能使用oracle保留关键字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接报错的。如下图使用了 *。
3、在建立表的时候,数字也是不能使用表名的开始的。
4、但如果使用双引号对表名进行规范的话,是可以建立以数字或者包含特殊字符的表名的。
5、过这样建立的表名,在查询数据的时候是非常麻烦的,查询时也要加双引号。而且这样建立的表名,在项目运行的过程中也非常容易造成各种麻烦,所以尽量不要使用。
1
2
3
4
5
6
7
8
9
10
11
普通排序SQL是这样的:SELECT NAME FROM TABLE ORDER BY NAME;这时候我们需要按照自己定义的NAME的排序规则进行排序,如按照某个字典ARRAY进行排序,就需要用个临时表来完成如建立表:C_SORT_Tcreatetable C_SORT_T
(
SORT_ID NUMBER(10),
SORT_NAME VARCHAR2(20),
SORT_SEQ NUMBER(10)
)然后把原有的SQL联合排序表进行查询,然后用SORT_SEQ排序就可以了。 如果是SORT array是不固定,而是在排序前传入SQL?该怎么办?如果排序的array不大的话,可以用DECODE来达到要求,如下:SELECT NAME FROM TABLE排序:SELECT NAME,DECODE(NAME,"ARRAY[0]",1,"ARRAY[1]",2,....,9999) SEQ FROM TABLE ORDER BY SEQ
---
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
ORDER BY的含义就是通过某个字段进行排序(默认是ASC,可以省略)。\r\nsql:select * from scores order by score DESC;\r\n以上语句就是通过score字段进行降序排序。\r\nsql:select * from scores order by score ;\r\n以上语句就是通过score字段进行升序排序。\r\n备注:DESC表示降序,ASC表示升序。
比如你的TOP限制是10
在ORACLE中就是where
后面添加rownum10这个条件
可以这么写:
"select
*
from
cs_service
where
rownum"
+pageSize
+"and
supplierId
not
in
(select
supplierID
from
cs_service
where
rownum"
+number
+"order
by
servicetype
desc)
"
+"order
by
servicetype
desc"