카테고리:

문자열 및 이진 함수

SOUNDEX

입력 문자열의 표음 문자 표현을 포함하는 문자열을 반환합니다.

이 함수를 사용하여 두 문자열(예: 성 LevineLavine, 단어 totoo 등)이 영어에서 비슷하게 발음되는지 확인할 수 있습니다.

이 함수는 Soundex System 에서 설명하는 Soundex 음성 알고리즘 을 사용합니다. 하지만 Snowflake는 성 접두사(예: 《Van》, 《De》, 《La》 등)에 대해 특별한 처리 기능을 제공하지 않습니다.

SOUNDEX('Pfister')P236 을 반환합니다. 처음 두 문자(Pf)는 인접하고 같은 Soundex 코드 번호(1)를 공유하므로, 이 함수는 두 번째 문자의 Soundex 코드 번호는 무시합니다.

일부 데이터베이스 시스템(예: Teradata)은 첫 번째 문자와 두 번째 문자가 같은 번호를 사용할 때 두 번째 문자의 Soundex 코드 번호를 유지하는 베리언트를 사용합니다. 해당 베리언트의 경우 Pfister 에 대한 문자열은 (P236 이 아니라) P123 입니다. 해당 베리언트를 사용하려면 SOUNDEX_P123 함수를 대신 호출하십시오.

참고 항목:

SOUNDEX_P123

구문

SOUNDEX( <varchar_expr> )
Copy

인자

varchar_expr

발음 표현이 반환되는 문자열입니다. 문자열은 라틴 또는 유니코드 문자 세트를 사용해야 합니다.

반환

반환된 값은 입력 문자열의 표음 문자 표현을 포함하는 VARCHAR입니다. 즉, 반환 값은 입력 문자열의 (철자가 아니라) 발음을 나타내는 (소리가 아니라) 문자열입니다.

다음 사항을 참고하십시오.

  • 반환된 값은 문자열의 첫 번째 문자를 나타내는 문자로 시작하고 그 뒤에 3자리 숫자가 추가됩니다(예: s400, c130).

    반환 값을 계산하는 방법에 대한 자세한 내용은 Soundex 표음 문자 알고리즘 (Wikipedia)을 참조하십시오.

  • 앞에서 언급했듯이, 첫 번째 문자와 두 번째 문자가 같은 번호를 사용할 때 두 번째 문자의 Soundex 코드 번호를 유지하는 베리언트를 사용하려면 SOUNDEX_P123 함수를 대신 호출하십시오.

사용법 노트

  • 이 함수는 문자를 4개(글자 1개와 숫자 3개)만 반환하기 때문에 출력은 주로 전체 문자열이 아니라 입력의 처음 몇 음절에 의해 결정됩니다.

    예를 들어, 다음 문은 문자열 3개를 비교하며 각 문자열에 대해 동일한 SOUNDEX 값을 반환합니다. 철자와 의미는 완전히 다르지만, 발음 측면에서 유사한 음절로 시작하기 때문입니다.

    SELECT SOUNDEX('I love rock and roll music.'),
           SOUNDEX('I love rocks and gemstones.'),
           SOUNDEX('I leave a rock wherever I go.');
    +----------------------------------------+--------------------------+------------------------------------------+
    | SOUNDEX('I LOVE ROCK AND ROLL MUSIC.') | SOUNDEX('I LOVE ROCKS.') | SOUNDEX('I LEAVE A ROCK WHEREVER I GO.') |
    |----------------------------------------+--------------------------+------------------------------------------|
    | I416                                   | I416                     | I416                                     |
    +----------------------------------------+--------------------------+------------------------------------------+
    
    Copy

다음 쿼리는 철자는 다르지만 일반적으로 비슷하게 발음되는 두 이름에 대한 SOUNDEX 값을 반환합니다.

SELECT SOUNDEX('Marks'), SOUNDEX('Marx');
+------------------+-----------------+
| SOUNDEX('MARKS') | SOUNDEX('MARX') |
|------------------+-----------------|
| M620             | M620            |
+------------------+-----------------+
Copy

다음 쿼리는 SOUNDEX를 사용하여 다른 테이블에서 잠재적으로 관련된 행을 찾는 방법을 보여줍니다.

테이블을 만들고 로딩합니다.

CREATE TABLE sounding_board (v VARCHAR);
CREATE TABLE sounding_bored (v VARCHAR);
INSERT INTO sounding_board (v) VALUES ('Marsha');
INSERT INTO sounding_bored (v) VALUES ('Marcia');
Copy

SOUNDEX 없이 관련 레코드를 찾습니다.

SELECT * 
    FROM sounding_board AS board, sounding_bored AS bored 
    WHERE bored.v = board.v;
+---+---+
| V | V |
|---+---|
+---+---+
Copy

SOUNDEX를 사용하여 관련 레코드를 찾습니다.

SELECT * 
    FROM sounding_board AS board, sounding_bored AS bored 
    WHERE SOUNDEX(bored.v) = SOUNDEX(board.v);
+--------+--------+
| V      | V      |
|--------+--------|
| Marsha | Marcia |
+--------+--------+
Copy