Поделиться через


SOUNDEX (Transact-SQL)

Возвращает четырехсимвольный код (SOUNDEX) для оценки степени сходства двух строк.

Значок ссылки на раздел Соглашения о синтаксисе в Transact-SQL

Синтаксис

SOUNDEX ( character_expression )

Аргументы

  • character_expression
    Алфавитно-цифровое выражение символьных данных. character_expression может быть константой, переменной или столбцом.

Типы возвращаемых данных

varchar

Замечания

Функция SOUNDEX преобразует алфавитно-цифровую строку в 4-символьный код, чье значение зависит от способа звучания строки при произношении. Первый символ кода является первым символом character_expression, преобразованным в верхний регистр. Второй, третий и четвертый символы кода являются числами, которые обозначают буквы в выражении. Буквы A, E, I, O, U, H, W и Y игнорируются, если только не являются первой буквой строки. Нули добавляются в конце при необходимости производить четырехсимвольный код. Дополнительные сведения о коде SOUNDEX см. в разделе Система индексирования Soundex.

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

Функция SOUNDEX учитывает параметры сортировки. Строковые функции могут быть вложенными.

Совместимость SOUNDEX

В предыдущих версиях SQL Server в функции SOUNDEX использовалось подмножество правил SOUNDEX. При уровне совместимости базы данных, равном 110, SQL Server 2012 применяет более полный набор правил.

После обновления до уровня совместимости 110 может потребоваться перестроение индексов, куч или проверочных ограничений, которые используют функцию SOUNDEX.

  • Кучу, которая содержит материализованный вычисляемый столбец, определенный функцией SOUNDEX, нельзя запрашивать, пока она не будет перестроена с помощью инструкции ALTER TABLE <table> REBUILD.

  • При повышении уровня совместимости ограничения CHECK, определенные функцией SOUNDEX, отключаются. Чтобы включить ограничение, выполните инструкцию ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL.

  • Запросы к индексам (в том числе индексированным представлениям), которые содержат материализованный вычисляемый столбец, определенный функцией SOUNDEX, можно выполнять только после их перестроения с помощью инструкции ALTER INDEX ALL ON <object> REBUILD.

Примеры

Следующий пример демонстрирует использование функции SOUNDEX и связанной с ней функции DIFFERENCE. В первом примере стандартные значения SOUNDEX возвращаются для всех согласных. Возвращение функции SOUNDEX для Smith и Smythe выдает одинаковый результат SOUNDEX, поскольку все гласные, буквы y и h, а также удвоенные буквы не включаются.

-- Using SOUNDEX
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');

Ниже приводится результирующий набор. допустим для параметров сортировки Latin1_General.

----- ----- 
S530  S530  

(1 row(s) affected)

Функция DIFFERENCE производит сравнение результатов шаблонов SOUNDEX. В следующем примере показаны две строки, различающиеся только по гласной. Возвращенное значение 4 означает максимальное сходство.

-- Using DIFFERENCE
SELECT DIFFERENCE('Smithers', 'Smythers');
GO

Ниже приводится результирующий набор. допустим для параметров сортировки Latin1_General.

----------- 
4           

(1 row(s) affected)

В следующем примере строки различаются в согласных, следовательно, возвращенное значение 2 указывает на большую степень различия.

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

Ниже приводится результирующий набор. допустим для параметров сортировки Latin1_General.

----------- 
2           

(1 row(s) affected)

См. также

Справочник

DIFFERENCE (Transact-SQL)

Строковые функции (Transact-SQL)

Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)