Compartilhar via


SOUNDEX (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de análise do SQLWarehouse no Microsoft Fabric

Retorna um código de quatro caracteres (SOUNDEX) para avaliar a similaridade de duas cadeias de caracteres.

Convenções de sintaxe de Transact-SQL

Sintaxe

SOUNDEX ( character_expression )

Argumentos

character_expression

Uma expressão alfanumérica de dados de caractere. character_expression pode ser uma constante, variável ou coluna.

Tipos de retorno

varchar

Comentários

SOUNDEX converte uma cadeia de caracteres alfanumérica em um código de quatro caracteres baseado em como a cadeia de caracteres soa quando falada em inglês. O primeiro caractere do código é o primeiro caractere de character_expression, convertido em maiúsculas. O segundo até o quarto caractere do código são números que representam as letras da expressão. As letras A, E, I, O, U, H, We Y são ignoradas, a menos que sejam a primeira letra da cadeia de caracteres. Zeros serão adicionados ao término, se necessário, para gerar um código de quatro caracteres. Para obter mais informações sobre o código SOUNDEX, consulte O sistema de indexação Soundex.

SOUNDEX códigos de cadeias de caracteres diferentes podem ser comparados para ver como as cadeias de caracteres são semelhantes quando faladas. A função DIFFERENCE() executa um SOUNDEX em duas cadeias de caracteres e retorna um inteiro que representa o quão semelhantes são os códigos SOUNDEX para essas cadeias de caracteres.

SOUNDEX diferencia a ordenação. As funções de cadeia de caracteres podem ser aninhadas.

Compatibilidade SOUNDEX

Nas versões anteriores do SQL Server, a função SOUNDEX aplicava um subconjunto das regras de SOUNDEX. No nível de compatibilidade de banco de dados 110 ou superior, o SQL Server aplica mais um conjunto mais completo das regras.

Depois de atualizar para o nível de compatibilidade 110 ou superior, talvez seja necessário recompilar os índices, heaps ou restrições CHECK que usam a função SOUNDEX.

  • Um heap que contém uma coluna computada persistente definida com SOUNDEX não pode ser consultado até que o heap seja recriado executando a seguinte instrução:

    ALTER TABLE <table> REBUILD;
    
  • CHECK restrições definidas com SOUNDEX são desabilitadas após a atualização. Para habilitar a restrição, execute a seguinte instrução:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Índices (incluindo exibições indexadas) que contêm uma coluna computada persistente definida com SOUNDEX não podem ser consultados até que o índice seja recriado executando a seguinte instrução:

    ALTER INDEX ALL ON <object> REBUILD;
    

Exemplos

Um. Usar SOUNDEX

O exemplo a seguir mostra a função SOUNDEX e a função DIFFERENCE relacionada. No primeiro exemplo, os valores padrão de SOUNDEX são retornados para todas as consoantes. Retornar o SOUNDEX para Smith e Smythe retorna o mesmo resultado SOUNDEX porque todas as vogais, a letra y, as letras dobradas e a letra h, não estão incluídas.

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

Veja a seguir o conjunto de resultados. Válido para uma ordenação Latin1_General.

S530  S530

B. Usar DIFERENÇA

A função DIFFERENCE compara a diferença dos resultados de padrão de SOUNDEX. O exemplo a seguir mostra duas cadeias de caracteres que diferem somente nas vogais. A diferença retornada é 4, a mais baixa diferença possível.

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

Veja a seguir o conjunto de resultados. Válido para uma ordenação Latin1_General.

4

No exemplo a seguir, as cadeias de caracteres diferem em consoantes; portanto, a diferença retornada é 2, a maior diferença.

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

Veja a seguir o conjunto de resultados. Válido para uma ordenação Latin1_General.

2