티스토리 뷰

Oracle

[Oracle] 정규표현식

kr98gyeongim 2024. 4. 11. 11:47

・정규표현식

:REGEXP_LIKE( string, pattern [, match] )

 

・어설션(Assertions)

:행이나 단어의 시작/끝을 나타내는 경계와 (앞 뒤를 읽고 조건식을 포함한) 어떤 식으로든 매치가 가능한 것을 나타내는 다른 패턴이 포함된다

정규식 패턴 설명 예제
^ 문장의 시작 (특정 문자열로 시작) REGEXP_LIKE(:checkText, '^[0-9a-zA-Z]{1}')
$ 문장의 끝 (특정 문자열로 끝남) REGEXP_LIKE(:checkText,  '[0-9]{3}$')

 

・수량자(Quantifiers)

:일치시킬 문자 또는 표현식의 개수를 의미

정규식 패턴 설명
? 없거나 있거나 (zero or one)
* 없거나 있거나 많거나 (zero or more)
+ 하나 또는 많이 (one or more)
{n} n개가 있는
{min,} 최소
{min, max} 최소, 그리고 최대

 

 

======================

일할 때 자주 쓰는 정규식

======================

 

예제1)

첫번째 문자가 숫자만  NOT REGEXP_LIKE(:checkText, '^[0-9]{1}')

SELECT
	 '체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')'  AS MESSAGE 
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText, '^[0-9]{1}')

 

예제2)

첫번째 문자가 영소/대문자 또는 숫자만  NOT REGEXP_LIKE(:checkText, '^[ a-zA-Z0-9 ]{1}')

SELECT
	 '체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')'  AS MESSAGE 
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText, '^[ a-zA-Z0-9 ]{1}')

 

예제3)

첫번째 문자가 영소/대문자 또는 숫자만 ,

2번째는 숫자, 영소/대문자 또는 숫자만,

3번째는 끝에서 4~6번째 문자가 숫자만 될 때

NOT REGEXP_LIKE(: checkText , '^[0-9a-zA-Z]{1}[0-9]{1}[0-9a-zA-Z]{1}[0-9]{3}$')

SELECT
	 '체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')'  AS MESSAGE 
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText , '^[0-9a-zA-Z]{1}[0-9]{1}[0-9a-zA-Z]{1}[0-9]{3}$')


--ex) 123456, A12345, 11A1234 ⇒ OK /
--ex) 11111(문자갯수 부족), 1A2345(2번째가 숫자가 아님), 123A45(3번째가 숫자가아님) ⇒ NG

 

'Oracle' 카테고리의 다른 글

[Oracle]RANK(), PARTITION BY 순위 함수  (0) 2021.01.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함