Перейти к содержимому
Последнее обновление

SOUNDEX

Описание​

Функция SOUNDEX вычисляет код Soundex для строки. Soundex представляет собой фонетический алгоритм, который преобразует английские слова в коды, отражающие их произношение, поэтому слова с похожим произношением получают одинаковый код.

Правило кодирования: возвращается код из 4 символов, состоящий из одной прописной буквы и трёх цифр (например, S530).

Синтаксис​

SOUNDEX(<expr>)

Параметры​

ПараметрОписание
<expr>Строка, для которой вычисляется код Soundex (поддерживаются только символы ASCII). Тип: VARCHAR

Возвращаемое значение​

Возвращает значение типа VARCHAR(4), представляющее код Soundex для строки.

Особые случаи:

  • Если аргумент равен NULL, возвращается NULL
  • Если строка пуста или не содержит букв, возвращается пустая строка
  • Обрабатываются только буквы ASCII, остальные символы игнорируются
  • Символы вне ASCII вызывают ошибку функции

Примеры​

  1. Базовое использование: кодирование слова
SELECT soundex('Doris');
+------------------+
| soundex('Doris') |
+------------------+
| D620 |
+------------------+
  1. Слова с похожим произношением получают одинаковый код
SELECT soundex('Smith'), soundex('Smyth');
+------------------+------------------+
| soundex('Smith') | soundex('Smyth') |
+------------------+------------------+
| S530 | S530 |
+------------------+------------------+
  1. Обработка пустой строки
SELECT soundex('');
+-------------+
| soundex('') |
+-------------+
| |
+-------------+
  1. Обработка значения NULL
SELECT soundex(NULL);
+---------------+
| soundex(NULL) |
+---------------+
| NULL |
+---------------+
  1. Для пустой строки возвращается пустая строка
SELECT soundex('');
+-------------+
| soundex('') |
+-------------+
| |
+-------------+
  1. Для строки, содержащей только небуквенные символы, возвращается пустая строка
SELECT soundex('123@*%');
+-------------------+
| soundex('123@*%') |
+-------------------+
| |
+-------------------+
  1. Игнорирование небуквенных символов
SELECT soundex('R@b-e123rt'), soundex('Robert');
+-----------------------+-------------------+
| soundex('R@b-e123rt') | soundex('Robert') |
+-----------------------+-------------------+
| R163 | R163 |
+-----------------------+-------------------+
  1. Пример ошибки для строки, содержащей только символы вне ASCII
SELECT soundex('你好');  
ERROR 1105 (HY000): errCode = 2, detailMessage = Not Supported: Not Supported: soundex only supports ASCII, but got: 你
SELECT soundex('Apache Doris 你好');
+--------------------------------+
| soundex('Apache Doris 你好') |
+--------------------------------+
| A123 |
+--------------------------------+

Ключевые слова​

SOUNDEX