下面的Select语句返回附加的列。在这一点上一切都很好,但我仍然需要添加一些检查。我需要:ORACLE SQL:使用SUBSTR构建CASE语句
- 如果文本列包含一个时期的标志,意味着我们有一个 OBJECT_OWNER/OBJECT_NAME然后告诉车主
- 如果列文本不包含句号(。)(。)符号,意味着这是一个规则,那么只有在OBJECT_NAME中没有该部分(只有RULE名称:ex:“R_FIRST”变成“R_FIRST”)而OBJECT_OWNER不应该包含任何内容(只是空白而不是像现在这样显示(NULL) );
目前查询:
SELECT
SUBSTR(SUBSTR(TRIM(X.TEXT), 1, INSTR(TRIM(X.TEXT), '.')-1), 8) AS OBJECT_OWNER,
SUBSTR(TRIM(X.TEXT), INSTR(TRIM(X.TEXT), '.')+1) AS OBJECT_NAME,
TRIM(X.TEXT) TEXT
FROM
TABLE_X X
WHERE
SUBSTR(TRIM(X.TEXT), 1, 6) in ('<FROM>','<INTO>','<RULE>');
电流输出:
OBJECT_OWNER OBJECT_NAME TEXT
SCHEMA100 T_PERSON <INTO> SCHEMA100.T_PERSON
SCHEMA110 T_CLIENT <FROM> SCHEMA110.T_CLIENT
(NULL) <RULE> R_FIRST <RULE> R_FIRST
所需的输出:
OBJECT_OWNER OBJECT_NAME TEXT
SCHEMA100 T_PERSON <INTO> SCHEMA100.T_PERSON
SCHEMA110 T_CLIENT <FROM> SCHEMA110.T_CLIENT
R_FIRST <RULE> R_FIRST
你可以添加问题你想要的输出? – Seyran
这也有助于展示输入数据的一个例子。 – SandPiper