Oracle에서 문자열을포함한 조건절을 줄때
Like를 사용한다
이러한 데이터들이 있다고 할때, 우리는 WHERE 절을 통해서 96이 포함된 부서의 이름만 출력해준다던지
'dept' 가 포함된 부서의 번호를 출력해준다던지. 이렇게 특정 키워드를 정해서 그 키워드를 포함하고있는 데이터들을 출력해줄때 Like를 사용한다.
여기서는 DEPTNO가 96,97,98에 공통적으로 '개발' 이라는 문자가 속해있다. 그럼 '개발' 이 포함된 deptno를 구하거나 '개발'이 포함된 부서의 지역들만 따로 추려줄수가 있을거같다. 백문이 불여일견 바로 해보자.
먼저 '개발' 글자를 포함하고있는 부서의 deptno를 검색해서 보여줘 라고 하면 96,97,98이 나올것이다.
Like문은 이렇게 사용된다. WHERE절에 조건의 기준이 되는 컬럼명을 적어주고 그 뒤에 like를 붙이고 %개발% 을붙여주었다.
예상한 결과대로 잘 출력되는것을 볼수 있다.
다음은 'dept'를 포함하고 있는 부서의 부서명과, 지역을 출력해주겠다.
부서명은 dept90, dept91이 나올것이고 그부서의 지역인 SEOUL과 JEJU가 나올것으로 예상된다.
예상한 결과대로 잘 출력되었다.
그럼 여기까지 한 쿼리문중에 %가 무슨의미를 갖는지 궁금하지않은가?
%나 _는 문자 그대로가 아닌 의미를가지고있는 WildCard 이다.
%문자% 는 '문자' 앞과 뒤에 어떠한문자가 글자수 제한없이 올수 있다는뜻. 말 그대로 '포함'이다
_문자_는 '문자' 앞과 뒤에 한글자. _하나당 한글자를 의미한다. '문자' 앞뒤로 어떠한값이 오던지 앞뒤로 딱 한글자씩, '문자'라는 걸 포함하고 있는 총4글자짜리를 의미한다.
응용을 해본다면 %문자 는 '문자'로 끝나는 어떠한 길이의 단어든 상관없이 검색해주고
_문자 는 앞에 1글자길이의 어떠한 문자든 상관없이 총 3글자중에 뒤에 두글자가 '문자'로 끝나는 단어를 검색해준다
그렇다면 이 Wildcard가 들어간 부서명이 있다면 이건 어떻게 포함해서 검색을할수있을까? 에 대한 의문은
ESCAPE로 Wildcard의 의미를 없애주고 문자열 그대로로 인식시켜줄수있다.
WHERE 조건절에 Like를 주면서 ESCAPE를 추가해주면된다.
LIKE와 ESCAPE를 이용하여 99번 부서의 DEPT%97을 조회해보려고 한다.
여기서 ESCAPE의 의미는 느낌표(!)의 바로 뒤에 오는 문자는, Wildcard의 의미를 뺀, 문자열 그대로로 인식시켜준다
따라서 '%!%%'의 느낌표 뒤의 %는 본래의 SQL에서 WildCard의 의미를 잃어버리고
문자열 %로만 인식되기때문에 검색이 가능해진다.
'Study > Database' 카테고리의 다른 글
MYSQL Database 생성 및 테이블 생성 문법 (0) | 2023.01.18 |
---|---|
SQL 제약조건의 종류 (0) | 2022.11.30 |
Oracle Database 계정 생성 및 권한 부여 삭제 (2) | 2022.11.22 |
Order by 문법 (0) | 2022.11.21 |
SQL Between A and B (0) | 2022.11.18 |