level oracle 字段名_Oracle 伪列Level的应用

本文通过多个示例详细介绍了Oracle数据库中伪列`LEVEL`的使用方法,包括日期运算、连接JOIN、字符串处理和正则表达式等场景,展示了`LEVEL`在递归查询和数据生成中的功能。
摘要由CSDN通过智能技术生成

目录导航:

WITH TB AS

(SELECT 'U101' USER_ID, DATE '2016-11-02' START_DT, DATE '2016-11-06' END_DT

FROM DUAL

UNION ALL

SELECT 'U102', DATE '2015-06-01', DATE '2015-06-03' FROM DUAL)

SELECT TB.USER_ID, TB.START_DT + LEVEL - 1

FROM TB

CONNECT BY TB.USER_ID = PRIOR TB.USER_ID

AND LEVEL <= (TB.END_DT - TB.START_DT + 1)

AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;

2fdb49c3ec38b06fe83a58a16e2e74fc.png

WITH TB AS

(SELECT 'U101' USER_ID, '12345' MOBILE, 3 CNT

FROM DUAL

UNION ALL

SELECT 'U102', '33563', 4 FROM DUAL)

SELECT A.USER_ID, A.MOBILE, B.LV

FROM TB A

LEFT JOIN (SELECT TB.USER_ID, LEVEL LV

FROM TB

CONNECT BY TB.USER_ID = PRIOR TB.USER_ID

AND LEVEL <= CNT

AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL) B

ON A.USER_ID = B.USER_ID

dbf93284da42f6640fb0af3931375233.png

SELECT DBMS_RANDOM.VALUE

FROM DUAL

CONNECT BY LEVEL <= 100;

6bcc4342e8d7f00fd25fdd6d27217114.png

SELECT SYSDATE - LEVEL

FROM DUAL

CONNECT BY LEVEL <= 100;

6e8a6accc51b24635a2e2be42f8116cd.png

SELECT TO_DATE('2020/01/02 08:00:00', 'yyyy-MM-dd HH24:mi:ss') +

(LEVEL - 1) DT

FROM DUAL

CONNECT BY LEVEL <= 7;

f934ec8bf57560e9621f03107496c8f7.png

SELECT SUBSTR('大家好', LEVEL, 1)

FROM DUAL

CONNECT BY LEVEL <= LENGTH('大家好');

f36cfb22569cb8c0602c5fd100efd592.png

WITH TB AS

(SELECT 'U1' USER_ID, '哈喽,世界' STR

FROM DUAL

UNION ALL

SELECT 'U2', '你好啊,地球' FROM DUAL)

SELECT TB.USER_ID, SUBSTR(STR, LEVEL, 1)

FROM TB

CONNECT BY TB.USER_ID = PRIOR TB.USER_ID

AND LEVEL <= LENGTH(STR)

AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;

55c269539126cf1fd420055857a7147e.png

WITH tb AS

(SELECT 'a' rn, '1,2,3' i_name

FROM dual

UNION ALL

SELECT 'b', '4,5,6' FROM dual)

SELECT rn, regexp_substr(i_name, '[^,]+', 1, LEVEL)

FROM tb

CONNECT BY PRIOR dbms_random.value IS NOT NULL

AND PRIOR rn = rn

AND LEVEL <= length(i_name) - length(REPLACE(i_name, ',', '')) + 1;

e4bed7064d3088d387effbdecc4a4bcf.png

标签:Level,伪列,USER,DUAL,Oracle,LEVEL,TB,ID,SELECT

来源: https://www.cnblogs.com/LuckyZLi/p/12194924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值