문법 |
목적 |
SOUNDEX함수는 char의 음성 표현을 가지는 문자열을 반환한다. 이 함수는 스펠링이 틀려도
발음이 유사한 영단어를 비교할수 있다.
음성 표현은 "The Art of Computer Programming, Volume 3:
Sorting and Searching"(Donald E.Knuth저)에서 다음과 같이 정의되고 있다.
문자열의 최초 문자를 남겨서 a,e,h,i,o,u,w,y의 문자가 나왔을 경우에는 모두 삭제한다.
남은 문자(첫 문자 후에)다음과 같이 숫자를 할당한다.
b, f, p, v = 1 c, g, j, k, q, s, x, z = 2 d, t = 3 l = 4 m, n = 5 r = 6
만약 같은 수치를 가지는 2개 이상의 문자가 오리지날 이름에서 인접해있거나(첫번째 스텝전) 또는
h와 w 사이의 문자를 제외하고 인접해 있다면, 최초 문자 이외의 모든 문자를 삭제한다.
0을 붙여서 최초의 4바이트를 반환한다.
char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터 형이다. 반환되는 값은
char과 같은 데이터형이다.
이 함수는 CLOB데이터를 직접 지원하지 않는다. 다만, 암묵적인 데이터 변환을 통해서 인수로써
전달될수 있다.
예제 |
다음 예제는 "Smyth"와 같은 음성 표현을 가지는 종업원을 반환한다.
SELECT last_name, first_name
FROM hr.employees
WHERE SOUNDEX(last_name)
= SOUNDEX('SMYTHE');
LAST_NAME FIRST_NAME
---------- ----------
Smith Lindsey
Smith William