Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. UNDEFINE TEXT
  2. WITH STRING AS (SELECT '&&TEXT' AS STR FROM DUAL),
  3. DE_STRING AS(            
  4.     SELECT STR, SUBSTR(STR,LEVEL,1) SS, ROWNUM RN
  5.     FROM STRING
  6.     CONNECT BY LEVEL <= LENGTH(STR)),
  7. PARENTHESIS AS(      
  8.     SELECT STR, SS, ROWNUM R
  9.         FROM DE_STRING
  10.             WHERE SS IN ('(',')')
  11.             ORDER BY RN),
  12. DE_PARENTHESIS AS(      
  13.     SELECT STR, TO_NUMBER(CASE SS WHEN '(' THEN 1 ELSE -1 END) AS SS, R FROM PARENTHESIS),
  14. RESULT AS(              
  15.     SELECT STR, SS, R, (SELECT SUM(SS) FROM DE_PARENTHESIS WHERE R<=EXT.R) AS RESULT FROM DE_PARENTHESIS EXT
  16.     START WITH R = 1
  17.     CONNECT BY PRIOR R = R-1),
  18. IS_MINUS AS(    
  19.     SELECT DISTINCT 1 AS BAD_MINUS FROM RESULT WHERE RESULT <0),
  20. IS_PLUS AS(          
  21.     SELECT DISTINCT 1 AS BAD_PLUS FROM RESULT WHERE (SELECT SUM(SS) FROM RESULT)>0),
  22. REF AS(              
  23.     SELECT
  24.         CASE
  25.             WHEN (SELECT * FROM IS_MINUS)=1 OR (SELECT * FROM IS_PLUS)=1 THEN NULL
  26.             ELSE (SELECT DISTINCT STR FROM RESULT)
  27.         END
  28.     AS STR FROM DUAL)    
  29. SELECT DISTINCT STR
  30. FROM RESULT
  31. WHERE STR IN(SELECT * FROM REF);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement