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


SOUNDEX (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW)в Microsoft FabricХранилище в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

SOUNDEX ( character_expression )

Аргументы

character_expression

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

Возвращаемые типы

varchar

Замечания

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

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

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

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

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

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

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

    ALTER TABLE <table> REBUILD;
    
  • CHECK ограничения, определенные с SOUNDEX, отключены при обновлении. Чтобы включить ограничение, выполните следующую инструкцию:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Индексы (включая индексированные представления), содержащие сохраненный вычисляемый столбец, определенный с SOUNDEX нельзя запрашивать, пока индекс не будет перестроен, выполнив следующую инструкцию:

    ALTER INDEX ALL ON <object> REBUILD;
    

Примеры

A. Использование SOUNDEX

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

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

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

S530  S530

B. Использование DIFFERENCE

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

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

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

4

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

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

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

2