1.LIKE 연산자
1. LIKE 연산자
LIKE연산자는 검색하려는 값을 정확하게 모를 경우에도 검색할 수 있도록 와일드카드랑 %를 함께 사용하여 원하는 결과를 검색합니다.
1) 와일드카드
-문자 하나와 일치합니다. 밑줄 문자_를 사용해서 LIKE와 같은 패턴 일치가 포함된 문자열 비교 작업에서 단일 문자와 일치하도록 합니다.
ex) SELECT NAME FROM TABLE WHERE NAME LIKE '__d%';
테이블의 NAME칼럼에서 3번째 자리가 d로 시작하는 데이터를 검색하라는 뜻이며
_ _는 임의에 첫 번째 두 번째 문자가 될 수 있음을 나타 냅니다.
2) % 는 한 칼럼 값에 원하는 문자열이 포함되어있을 때 사용됩니다.
ex) SELECT NAME FROM TABLE WHERE NAME LIKE '% A%';
TABLE의 NAME칼럼에서 A의 값을 포함하고 있는 데이터를 검색하라는 뜻입니다.
2.ROWNUM 키워드
ROWNUM이라는 시스템 함수를 사용하면 레코드 별 순서를 가져올 수 있습니다.
ROWNUM을 SELECT문에서 따로 검색해주지 않아도 결과 집합을 따 만들어낼 때 자동적으로 로우 넘버가 하나씩 만들어집니다.
하지만 밑의 표처럼 어떠한 정렬도 되지 않는 상태에서 ROWNUM을 사용하게 된다면 의미 없는 순번이 되어버릴 것입니다.
그래서 보통 ORDER BY를 같이 사용하는데 서브 쿼리를 지정해 주지 않고 질의문을 날리게 되면
ROWNUM의 순서가 뒤죽 반죽이 돼버립니다. SQL 또한 실행의 우선순위가 존재하기 때문입니다.
따라서 정렬된 서브 쿼리 결과에 ROWNUM을 사용합니다.
우선 ROWNUM을 검색하기 위해서는
SELECT ROWNUM, TABLE.* FROM TABLE;
(TABLE.*을 한정해서 사용하게 되면 ROWNUM이 들어갈 수 있는 여분이 생깁니다.)
이전 SELECT * FROM TABLE은 TABLE에 있는 모든 것이라는 묵시적으로 이용하게 되는데,
만약 ROWNUM, * FROM TABLE이라고 하게 되면 *앞에 한정사가 없기 때문에 모든 것을 포함시킨다라는 의미가 됩니다
그래서 오류가 나게 되지만 TABLE의 한정사로 TABLE.*이러고 작성하게 되면 테이블의 모든 칼럼을 의미하게 되어 다른 것이 들어갈 수 있는 공간이 생기게 됩니다.
또한 조건절에서 로우 넘버로 검색을 하기 위해 선 서브 쿼리를 사용해주어야 합니다.
SELECT *FROM (SELECT ROWNUM NUM, TABLE* FROM TABLE) WHERE NUM BETWEEN 1 AND 5;
() 소 괄 후에서 NUM이라는 별칭으로 ROWNUM가 만들어지고 TABLE을 이용한 새로운 결과 집합이 생겨난 것입니다.
그것을 FROM으로 사용해 모든 것을 검색하고 별칭의 NUM을 활용해 다양한 조건을 이용할 수 있습니다.
만약 별칭을 지정해주지 않는다면 앞에 있는 SELECT * FROM의 ROWNUM가 사용되기 때문에 서브 쿼리를 사용한 일이 무의미해질 수 있습니다.
ROWNUM | 학번 | 이름 | 납입금 | 납입일 |
1 | 203424 | 홍길동 | 34920 | 2012-3-23 |
2 | 222304 | 유재석 | 32152 | 2012-02-02 |
3 | 125342 | 하하 | 213215 | 2012-03-04 |
4 | 162345 | 철수 | 21312 | 2012-03-23 |
5 | 185434 | 영희 | 75433 | 2012-05-23 |
ROWNUM에 정리를 하면
ROWNUM이라는 칼럼은 결과 집합이 생성될 때마다 자동적으로 생성되며 레코드의 각 개별 번호이다.
또한 ORDER BY에서 사용할 수 있지만 서브 쿼리에서 실행된 ROWNUM과 바깥 쿼리의 ROWNUM은 별개로 생성되므로 각 각 참조할 수 가없는데 서브 쿼리에서 발생된 ROWNUM을 바깥 쿼리에서 참조하게 하려면 서브 쿼리의 ROWNUM의 별칭을 이용해 바깥 쿼리나 조건절에서 참조할 수 있도록 별칭을 사용해주어야 한다.
또한 조건으로 ROWNUM을 사용하기 위해선 ROWNUM을 서브 쿼리에서 메모리에 올려놓고 사용해야
메모리에 올라가있는 ROWNUM을 조건에서 참조할 수 있다. ORDER BY 정렬 또한 마찬가지이다.
3. Oracle 정규식 표현법
정규식 REGEXP 함수 | Description |
REGEXP_LIKE | 정규표현식을 사용하여 조건 검색을 실행 |
REGEXP_REPLACE | 정규표현식에 일치한 부분을 지정한 다른 문자열로 치환 |
REGEXP_INSTR | 정규표현식에 일치하는 부분의 최초 위치반환 |
REGEXP_SUBSTA | 정규표현식에 일치하는 부분 문자열을 찾아 결과리턴 |
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 32일차 -52 (0) | 2020.04.16 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 31일차 -51 (0) | 2020.04.13 |
자바기반의 웹&앱 응용 SW개발자 양성과정 29일차 -49 (0) | 2020.04.09 |
자바기반의 웹&앱 응용 SW개발자 양성과정 29일차 -48 (0) | 2020.04.09 |
자바기반의 웹&앱 응용 SW개발자 양성과정 28일차 -47 (0) | 2020.04.08 |
댓글