我正在尝试将表格分类为各种类别,但无法获得所需的结果,请检查以下查询结果、现有结果以及预期结果
标准
非标准
临时
TO_BE_DROPPED
SELECT OWNER,OBJECT_NAME,REGEXP_REPLACE(OBJECT_NAME,'^([A-Z0-9$]{1,})_([A-Z0-9$]{1,})_.*','\1_\2')AS BEGINNING,REGEXP_SUBSTR(OBJECT_NAME,'[^_]*$') AS ENDING,CASE
WHEN REGEXP_LIKE(OBJECT_NAME,'^D(S[CP]?|T)_.+_(T|(W0?[123]?))$')
THEN
'STANDARD'
WHEN REGEXP_LIKE(OBJECT_NAME,'^DB_.+_(D|F|T|W|W1|W2|W3)$')
THEN
'STANDARD'
WHEN REGEXP_LIKE(OBJECT_NAME,'^DE_.+_(D|F|L|T|W|W01|W02|W03|W1|W2|W3)$')
THEN
'STANDARD'
WHEN OBJECT_NAME LIKE 'TBD%'
THEN
'TO_BE_DROPPED'
WHEN OBJECT_NAME LIKE 'TMP%'
THEN 'TEMPORARY_TABLE'
WHEN REGEXP_LIKE(OBJECT_NAME,'^DA_.+_(D|F|L|T|W|W01|W02|W03|W1|W2|W3|A|AD|AM|AQ|AY)$')
THEN
'STANDARD'
ELSE 'NON_STANDARD'
END
AS TABLE_CLASSIFICATION
FROM DBA_OBJECTS
WHERE OWNER IN ('DI_ABC')
AND OBJECT_TYPE = 'TABLE'
GROUP BY OWNER,OBJECT_NAME
ORDER BY OWNER DESC,OBJECT_NAME;
现有结果
snO OWNER OBJECT_NAME BEGINNING ENDING TABLE_CLASSIFICATION
01 DI_SCC DSC_02_CUST_ORD DSC_02 ORD NON_STANDARD
02 DI_SCC DSC_02_CUST_ORD_T DSC_02 T NON_STANDARD
03 DI_SCC DSC_02_CUST_ORD_W DSC_02 W NON_STANDARD
04 DI_SCC DSC_02_CUST_ORD1 DSC_02 ORD1 NON_STANDARD
05 DI_SCC DSC_02_CUST_ORD_4 DSC_02 4 NON_STANDARD
06 DI_SCC DSP_03_CUST_SHP DSP_03 SHP NON_STANDARD
07 DI_SCC DSP_03_CUST_SHP_T DSP_03 T NON_STANDARD
08 DI_SCC DSP_03_CUST_SHP_W DSP_03 W NON_STANDARD
09 DI_SCC DSP_03_CUST_SHP9 DSP_03 SHP9 NON_STANDARD
10 DI_SCC DSP_03_CUST_SHP_62 DSP_03 62 NON_STANDARD
14 DI_SCC DT_CUST_WRD DT WRD NON_STANDARD
15 DI_SCC DT_CUST_WRD_T DT T NON_STANDARD
16 DI_SCC DT_CUST_WRD_W DT W NON_STANDARD
17 DI_SCC DT_CUST_WRD5 DT WRD5 NON_STANDARD
18 DI_SCC DT_CUST_WRD_8 DT 8 NON_STANDARD
19 DI_SCC DT_CUST_WRD23 DT WRD23 NON_STANDARD
预期结果
snO OWNER OBJECT_NAME BEGINNING ENDING TABLE_CLASSIFICATION
01 DI_SCC DSC_02_CUST_ORD DSC_02 ORD STANDARD
02 DI_SCC DSC_02_CUST_ORD_T DSC_02 T STANDARD
03 DI_SCC DSC_02_CUST_ORD_W DSC_02 W STANDARD
04 DI_SCC DSC_02_CUST_ORD1 DSC_02 ORD1 NON_STANDARD
05 DI_SCC DSC_02_CUST_ORD_4 DSC_02 4 NON_STANDARD
06 DI_SCC DSP_03_CUST_SHP DSP_03 SHP STANDARD
07 DI_SCC DSP_03_CUST_SHP_T DSP_03 T STANDARD
08 DI_SCC DSP_03_CUST_SHP_W DSP_03 W STANDARD
09 DI_SCC DSP_03_CUST_SHP9 DSP_03 SHP9 NON_STANDARD
10 DI_SCC DSP_03_CUST_SHP_62 DSP_03 62 NON_STANDARD
14 DI_SCC DT_CUST_WRD DT WRD STANDARD
15 DI_SCC DT_CUST_WRD_T DT T STANDARD
16 DI_SCC DT_CUST_WRD_W DT W STANDARD
17 DI_SCC DT_CUST_WRD5 DT WRD5 NON_STANDARD
18 DI_SCC DT_CUST_WRD_8 DT 8 NON_STANDARD
19 DI_SCC DT_CUST_WRD23 DT WRD23 NON_STANDARD
我正在尝试纠正它以获得预期的结果,我需要纠正什么?
WHEN REGEXP_LIKE(OBJECT_NAME,'^D(S[CP]?|T)_.+_([A-Z$])$')
有什么建议必须在上面的 reg ex 语句中修改吗?
--this case statement is for schema - DI_STAGE
WHEN REGEXP_LIKE(OBJECT_NAME,'^D(S[CP]?|T)_.+_(T|(W0?[123]?))$')
--this case statement is for schema - DI_ODS
WHEN REGEXP_LIKE(OBJECT_NAME,'^DB_.+_(D|F|T|W|W1|W2|W3)$')
--this case statement is for schema - DI_EDW
WHEN REGEXP_LIKE(OBJECT_NAME,'^DE_.+_(D|F|L|T|W|W01|W02|W03|W1|W2|W3)$')
--this case statement is for schema - DI_MART
WHEN REGEXP_LIKE(OBJECT_NAME,'^DE_.+_(D|F|L|T|W|W01|W02|W03|W1|W2|W3)$')
'^DA_.+_(D|F|L|T|W|W01|W02|W03|W1|W2|W3|A|AD|AM|AQ|AY)$')