Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UNDEFINE TEXT
- WITH STRING AS (SELECT '&&TEXT' AS STR FROM DUAL),
- DE_STRING AS(
- SELECT STR, SUBSTR(STR,LEVEL,1) SS, ROWNUM RN
- FROM STRING
- CONNECT BY LEVEL <= LENGTH(STR)),
- PARENTHESIS AS(
- SELECT STR, SS, ROWNUM R
- FROM DE_STRING
- WHERE SS IN ('(',')')
- ORDER BY RN),
- DE_PARENTHESIS AS(
- SELECT STR, TO_NUMBER(CASE SS WHEN '(' THEN 1 ELSE -1 END) AS SS, R FROM PARENTHESIS),
- RESULT AS(
- SELECT STR, SS, R, (SELECT SUM(SS) FROM DE_PARENTHESIS WHERE R<=EXT.R) AS RESULT FROM DE_PARENTHESIS EXT
- START WITH R = 1
- CONNECT BY PRIOR R = R-1),
- IS_MINUS AS(
- SELECT DISTINCT 1 AS BAD_MINUS FROM RESULT WHERE RESULT <0),
- IS_PLUS AS(
- SELECT DISTINCT 1 AS BAD_PLUS FROM RESULT WHERE (SELECT SUM(SS) FROM RESULT)>0),
- REF AS(
- SELECT
- CASE
- WHEN (SELECT * FROM IS_MINUS)=1 OR (SELECT * FROM IS_PLUS)=1 THEN NULL
- ELSE (SELECT DISTINCT STR FROM RESULT)
- END
- AS STR FROM DUAL)
- SELECT DISTINCT STR
- FROM RESULT
- WHERE STR IN(SELECT * FROM REF);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement