DB 테이블 tableA 의 칼럼 columnA 에 'a_bcdef' 와 'b_bcdef' 가 들어 있는데,
앞에 있는 글자는 무엇이 와도 되지만 두번째 글자에는 '_' 가 들어가야 할 때 어떻게 쿼리해야 할까..?
select from tableA
where columnA like '_#_%' escape '#'
;
이렇게 하면 무슨 뜻일까..? '_' 는 어떤 단어든 하나를 대체한다는 의미에서 '?' 검색과 동일하고,
'%' 는 문자나 수량에 상관없다는 의미에서 '*' 검색과 동일.
따라서 상기 쿼리에서,
첫번째 '_' 는 어떤 문자든이라는 의미에서 '?' 검색..
두번째의 # 은 escpae '#' 에 의해서 쿼리가 실제 동작할 때 '_#_%' 에서 '#' 을 빼라는 의미인데,
그 다음 문자인 세번째 '_' 는 '?' 검색이 아니라 그냥 문자라고 검색용 키워드가 아니라 단순 문자 처리.
네번째 '%' 는 보통의 like 검색에 사용되는 '*' 검색..
where columnA like '%#_%' escape '#' 라고 하면,
첫번째 '%' 에 의해 앞에는 무슨 문자든 수량에 상관없이 검색하되,
두번째/세번째 '#_' 에 의해 '_' 를 '?' 가 아닌 순수한 문자 '_' 로 보아 언더바가 들어가야 하고,
네번째 '%' 에 의해 뒤에 아무렇게나 오면 된다는 것.
따라서 '_' 가 들어가 있는 것이면 무엇이든지 검색해내는 쿼리.
그렇다면, '#' 만 사용되는 것일까..? 아니다 '@' 를 사용해도 된다.. ^^;
'Server Oriented > DB-Oracle' 카테고리의 다른 글
밤 12시 정각은 어제 또는 오늘..? DB 나 웹서버 시스템에게 24:00:00 또는 00:00:00 이란..? (1) | 2015.09.24 |
---|---|
통계 R (0) | 2015.09.09 |
오렌지를 이용하여 DB 에서 특정 키워드가 사용된 모든 오브젝트 추출 (0) | 2015.07.14 |
오라클 시간 차이, 시분초 (0) | 2015.04.30 |
Orange 4.x 도 윈도우8.1 64bit 에 설치해서 사용 가능 (0) | 2014.06.20 |