본문 바로가기
Web programming/SQL & DB

관계 연산자, 패턴 연산자, 정규 표현식

by Skilly 2020. 4. 10.

 

 관계 연산자 : NOT, AND, OR, BETWEEN, IN 

   OR은 그 중에 하나만 만족해도 조회

   IN은 여러개의 '=' / 지정 값 조회
   AND는 모두 만족해야 조회 / 연속된 숫자 표현 

SELECT * FROM NOTICE WHERE ID = 1700;
SELECT * FROM NOTICE WHERE HIT BETWEEN AND 5;   -- 조회수가 0~5인 데이터 조회

FROM NOTICE WHERE HIT IN (0, 5, 7);   -- 조회수가 0 또는 5 또는 7인 것 조회
SELECT * FROM NOTICE WHERE HIT NOT IN (0, 5, 7);   -- 지정한 값 제외하고 조회 



 

 패턴 연산자 : LIKE, %, _ : 검색을 위한 연산자 

   LIKE 연산자 : 대입연산자(=) 없이 기재
   % 지정자 : 자리수 제한 없음
    연산자 : 문자의 자릿 수를 나타냄

SELECT * FROM MEMBER WHERE NAME = '김%';   -- '김%' 자체 문자열로 인식됨

SELECT * FROM MEMBER WHERE NAME LIKE '김%';   --  김으로 시작되는 문자열 조회
SELECT * FROM MEMBER WHERE NAME NOT LIKE '김%';   -- 김으로 시작되지 않는 문자열 조회 
SELECT * FROM MEMBER WHERE NAME LIKE '%김%'   -- 김이 들어간 모든 문자열 조회, 김 문자 앞뒤로 여러 글자가 들어 갈 수 있음

SELECT * FROM MEMBER WHERE NAME LIKE 'A_';   -- 2자리
SELECT * FROM MEMBER WHERE PHONE LIKE '010-____-1234'   -- 13자리


 


정규 표현식 (Regular Expression, RegExr) 

정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현할 때 사용하는 형식 언어

(정규표현식 Regex Cheat Sheet 참고, 매치되는지 입력 후 검색하여 확인)

 

정규 표현식 문법 확인 > https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

   [ ] : 한 글자를 대변할 때 사용

    -  : 연속된 숫자에 사용

         ex. 01[012]-[0-9]-[0-9]  -- 해석: 01에 0또는 1또는 2 - [0~9중 한 글자] - [0~9중 한 글자]

   \d : 0~9까지의 정수. 10진수 

   {...} : 반복횟수를 지정

         ex. ab{2}c > abbc
         ex. 01[012]-\d{3,4}-\d{4}  -- 해석: 0~9까지의 정수가 {3자리 또는 4자리} 
    ^ : 문자열이나 행의 처음을 의미하며, 정교하게 검색 시 사용

    $ : 문자열이나 행의 끝을 의미하며, 정교하게 검색 시 사용
        ex. ^01[016]-\d{3,4}-\d{4}ae$ 검색 시 결과 > 010-0000-1123ae    

    REGEXP_LIKE :
    SELECT * FROM MEMBER WHERE REGEXP_LIKE(PHONE, '^01[016]-\d{3,4}-\d{4}$');
    SELECT ID, PHONE FROM MEMBER WHERE NOT REGEXP_LIKE(PHONE, '^01[016]-\d{3,4}-\d{4}$');


 

 

 

반응형