2010-06-21 6 views
0

정규식을 사용하여 어디에 저장 프로 시저의 where 절에서 ltrim rtrim을 사용하는지 찾을 수 있습니다.정규식과 일치하는 정규식 (LTRIM (xx)) = xx

정규식이 일치해야 물건 같은 : 등

RTRIM(LTRIM(PGM_TYPE_CD))= 'P')) 

RTRIM(LTRIM(PGM_TYPE_CD))='P')) 

RTRIM(LTRIM(PGM_TYPE_CD)) = 'P')) 

RTRIM(LTRIM(PGM_TYPE_CD))= P 

RTRIM(LTRIM(PGM_TYPE_CD))= somethingelse)) 

...

내가 좋아하는 뭔가를 시도하고 ...

.TRIM.*\)\s+ 

답변

0

이 당신이 원하는 :

[LR]TRIM\([RL]TRIM\([^)]+\)\)\s*=\s*[^)]+\)* 

?

그 행함을 말하는 무엇 : 당신이 관련 부분을 괄호로 포장 할 수

[LR] # Match single char, either "L" or "R" 
TRIM # Match text "TRIM" 
\(  # Match an open parenthesis 
[RL] # Match single char, either "R" or "L" (same as [LR], but easier to see intent) 
TRIM # Match text "TRIM" 
\(  # Match an open parenthesis 
[^)]+ # Match one or more of anything that isn't closing parenthesis 
\)\) # Match two closing parentheses 
\s*  # Zero or more whitespace characters 
=  # Match "=" 
\s*  # Again, optional whitespace (not req unless next bit is captured) 
[^)]+ # Match one or more of anything that isn't closing parenthesis 
\)*  # Match zero or more closing parentheses. 


이 자동화되어있는 경우 당신이 그것을에있는 변수를 알고 싶어

[LR]TRIM\([RL]TRIM\(([^)]+)\)\)\s*=\s*([^)]+)\)* 

그룹 1과 2의 첫 번째 변수와 두 번째 변수 (정규 표현식에 따라 \ 1과 \ 2 또는 $ 1과 $ 2)를 제공합니다.

+0

정확히 내가 찾고있는 것이 었습니다. 나는 이것을 자동으로 만들고 테이블 이름을 찾고 싶다 !! 그러나 나는 내가 거꾸로 물건을 읽어야 할 파일들을 살펴볼 때 그것이 길어질 것이라고 생각한다. 그래서 컬럼 이름을 가지고 테이블 이름이 무엇인지 알아 낸 후에 oracle에 대한 쿼리를 실행하려고합니다. 도움을 주셔서 감사합니다 – jason

+0

그래, 모든 쿼리 블록을 안정적으로 식별하고 위와 일치하지 않는 쿼리를 쉽게 제외 할 수 있는지에 따라 달라집니다. Oracle SP 구문에 익숙하지 않지만 SQL을 더 많이 사용한다고 생각합니다. 그 종류의 물건에 대한 파서 영역. –

1

[RL]TRIM\s*\(는, TRIM 다음 R 또는 L에 대해 다음 공백의 번호 및 (

+0

이것은'select RTRIM (LRTRIM (....'단지 물건을 원합니다.'WHERE' 절에서 rtrim ltrim을 사용하고 있습니다. – jason

+0

당신의 이름이'[RL] TRIM \ s * \ (. * \ s * ='나는 얇은 kthis 충분할 것이다. – jason

0

을 보는 방법을 이런 식으로 뭔가에 대해 :이 트림의 내부를 캡처합니다

.*[RL]TRIM\s*\(\s*[RL]TRIM\s*\([^\)]*)\)\s*\)\s*=\s*(.*) 

및 그룹 1과 2에서 =의 오른쪽은 모든 관련 영역의 모든 공백을 처리해야합니다.

관련 문제