Oracle常用SQL汇总

今天的博客主题

      数据库篇 --》Oracle--》常用SQL汇总


分页SQL语句

默认排序

拼音排序

分组统计聚合

正则查询

设置表主键自增

按照分号;拆分字段为多行


分页SQL语句

SELECT
	*
FROM
	(
		SELECT
			TMP. ID,
			ROWNUM AS ROW_ID
		FROM
			(SELECT CC. ID FROM MYTABLE CC) TMP
		WHERE
			20 >= ROWNUM
	)
WHERE
	ROW_ID > 0

默认排序

SELECT * FROM YL_LIBRARY A ORDER BY A.REPORT_TITLE;

拼音排序

SELECT * FROM USER A ORDER BY NLSSORT(A.USER_NAME, 'NLS_SORT=SCHINESE_PINYIN_M');

分组统计聚合

SELECT AGE,COUNT(AGE) FROM USERS GROUP BY AGE;

正则查询

匹配字段特殊字符
SELECT * FROM TEMP_COMPANY_1121_4226_YFGS WHERE REGEXP_LIKE(CN_NAME,'[[:punct:]]+'); 

-- ###################################
[[:alpha:]]    任何字母。[A-Za-z]
[[:digit:]]    任何数字。[0-9]
[[:alnum:]]    任何字母和数字。[A-Za-z0-9]
[:blank:]      标准是空格和TAB,但Oracle里只有空格!
[:cntrl:]      CONTROL键
[:graph:]      即所有可见字符,不包括空格
[:print:]      可打印字符 ,即空格+所有可见字符
[[:space:]]    空白字符。
[[:punct:]]    任何标点符号。
[[:upper:]]    任何大写字母。[A-Z]
[[:lower:]]    任何小写字母。[a-z]
[[:xdigit:]]   任何16进制的数字,相当于[0-9a-fA-F]。

设置表主键自增

-- 创建一个序列
CREATE SEQUENCE TEMP_COMPANY_ID
MINVALUE 1       --最小值
NOMAXVALUE       --不设置最大值
START WITH 1     --从1开始计数
INCREMENT BY 1   --每次加1
NOCYCLE          --一直累加,不循环
NOCACHE; 

-- 创建触发器。(insert语句不传ID)
CREATE OR REPLACE TRIGGER TEMP_COMPANY_INFO_1121_LKL
BEFORE INSERT ON TEMP_COMPANY_INFO_1121_LKL FOR EACH ROW WHEN (new.id is null)
begin
select TEMP_COMPANY_ID.nextval into:new.id from dual;
end;

按照分号;拆分字段为多行

SELECT 
  ID,
  TRIM(REGEXP_SUBSTR(CN_NAME_ABBR, '[^;]+', 1, LEVEL)) CN_NAME_ABBR
FROM 
  TEMP_COMPANY_1121_4226_YFGS
CONNECT BY LEVEL <= REGEXP_COUNT(CN_NAME_ABBR, ';') + 1
AND ID = PRIOR ID
AND PRIOR dbms_random.value IS NOT NULL

 

 

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值