<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Oracle 유사도 검색 방법 정리</title>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; }
h1, h2, h3 { color: #2c3e50; }
code { background: #f4f4f4; padding: 2px 4px; border-radius: 4px; }
table { border-collapse: collapse; width: 100%; margin-top: 10px; }
table, th, td { border: 1px solid #ccc; }
th, td { padding: 8px; text-align: left; }
th { background: #f9f9f9; }
</style>
</head>
<body>
<h1>Oracle에서 유사도 검색 방법 정리</h1>
<h2>1. 문자열 기반 검색</h2>
<h3>LIKE 연산자</h3>
<ul>
<li>패턴 매칭에 사용</li>
<li><code>%</code> : 0개 이상의 문자 대체</li>
<li><code>_</code> : 정확히 1개의 문자 대체</li>
</ul>
<pre><code>SELECT * FROM employees WHERE first_name LIKE '%ohn%';
</code></pre>
<p>→ "John", "Johnson" 등 포함된 결과 반환</p>
<h3>INSTR 함수</h3>
<ul>
<li>특정 문자열 내에서 부분 문자열의 위치를 반환</li>
</ul>
<pre><code>SELECT INSTR('CORPORATE FLOOR', 'OR', 3) FROM dual;
</code></pre>
<hr>
<h2>2. PURGE 명령어</h2>
<h3>DROP TABLE ... PURGE</h3>
<p>테이블을 <strong>Recycle Bin</strong>에 남기지 않고 즉시 삭제</p>
<pre><code>DROP TABLE employees PURGE;
</code></pre>
<h3>PURGE RECYCLEBIN</h3>
<p>현재 사용자 스키마의 Recycle Bin 전체 비움</p>
<pre><code>PURGE RECYCLEBIN;
</code></pre>
<h3>PURGE DBA_RECYCLEBIN</h3>
<p>DBA 권한으로 데이터베이스 전체 Recycle Bin 비움</p>
<hr>
<h2>3. 글자 유사도 검색</h2>
<h3>기본 검색</h3>
<ul>
<li>LIKE: 단순 패턴 매칭</li>
<li>INSTR: 문자열 내 위치 반환</li>
</ul>
<h3>고급 검색 (문자열 유사도)</h3>
<p>Oracle 표준 DB에는 <code>FUZZY_MATCH</code> 함수가 없으며, 대신 <strong>UTL_MATCH 패키지</strong>를 사용해야 함.</p>
<h4>주요 함수</h4>
<ul>
<li><strong>EDIT_DISTANCE</strong> (Levenshtein 거리 기반)</li>
</ul>
<pre><code>SELECT UTL_MATCH.EDIT_DISTANCE('Chris', 'Kris') FROM dual;
-- 결과: 2
</code></pre>
<ul>
<li><strong>EDIT_SIMILARITY</strong> (0~100 점수 반환)</li>
</ul>
<pre><code>SELECT UTL_MATCH.EDIT_SIMILARITY('Chris', 'Kris') FROM dual;
-- 결과: 80
</code></pre>
<ul>
<li><strong>JARO_WINKLER</strong> (발음/철자 유사성 기반)</li>
<li><strong>JARO_WINKLER_SIMILARITY</strong> (유사도 점수 반환)</li>
</ul>
<hr>
<h2>4. 요약 비교</h2>
<table>
<tr>
<th>방법</th>
<th>특징</th>
<th>적합한 상황</th>
</tr>
<tr>
<td>LIKE</td>
<td>단순 패턴 매칭</td>
<td>특정 문자열 포함 여부 확인</td>
</tr>
<tr>
<td>INSTR</td>
<td>문자열 내 위치 반환</td>
<td>텍스트 분석, 위치 기반 검색</td>
</tr>
<tr>
<td>UTL_MATCH</td>
<td>Levenshtein, Jaro-Winkler 지원</td>
<td>오타 교정, 고객 데이터 중복 제거</td>
</tr>
<tr>
<td>PURGE</td>
<td>Recycle Bin 비우기/즉시 삭제</td>
<td>공간 확보, 불필요한 객체 제거</td>
</tr>
</table>
<hr>
<h2>5. 결론</h2>
<ul>
<li>단순 검색에는 <strong>LIKE/INSTR</strong> 활용</li>
<li>철자 오류나 발음 유사성을 고려한 검색에는 <strong>UTL_MATCH 패키지</strong> 사용</li>
<li><code>FUZZY_MATCH</code>는 표준 Oracle DB에는 없음 → 혼동 주의</li>
<li>데이터 정제 및 중복 제거 작업에 유용</li>
</ul>
</body>
</html>
2026/07/30
오늘의 이야기
피드 구독하기:
댓글 (Atom)
오늘의 이야기
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Or...
-
주소 검색
-
이전 글에서 정리할 것처럼 java에서 kotlin으로 이전을 했습니다. 그러고 나서 보기 시작했는 데, DefaultSharedPrefernces의 사용할 수 없는 환경으로 변경이 된 것을 알게 되었습니다. 이전 prefs = Prefere...
댓글 없음:
댓글 쓰기