BINARY_CHECKSUM (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric
Retorna o valor binário da soma de verificação calculado em uma linha de tabela ou em uma lista de expressões.
Convenções de sintaxe de Transact-SQL
Sintaxe
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Argumentos
*
Especifica que a computação abrange todas as colunas da tabela. BINARY_CHECKSUM ignora colunas de tipos de dados não comparáveis em sua computação. Tipos de dados não comparáveis incluem
- cursor
- imagem
- ntext
- text
- xml
e tipos CLR (Common Language Runtime) definidos pelo usuário não comparáveis.
expressão
Uma expression de qualquer tipo. BINARY_CHECKSUM ignora expressões de tipos de dados não comparáveis em sua computação.
Tipos de retorno
int
Comentários
BINARY_CHECKSUM(*)
, calculado em qualquer linha de uma tabela, retorna o mesmo valor contanto que a linha não seja modificada posteriormente. BINARY_CHECKSUM
satisfaz as propriedades de uma função de hash: quando aplicado em quaisquer duas listas de expressões retorna o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e forem iguais quando comparados com o operador de igualdade (=). Para essa definição, dizemos que valores nulos, de um tipo especificado, são comparados como valores iguais. Se, pelo menos, um dos valores na lista de expressões for alterado, a soma de verificação da expressão também poderá ser alterada. Entretanto, essa alteração não é garantida e, para detectar se os valores foram alterados, recomendamos o uso de BINARY_CHECKSUM
somente se o aplicativo pode tolerar uma alteração ausente ocasional. Caso contrário, considere a possibilidade de usar o HASHBYTES
. Com um algoritmo de hash MD5 especificado, a probabilidade de que HASHBYTES
retornará o mesmo resultado para duas entradas diferentes é muito menor que BINARY_CHECKSUM
.
BINARY_CHECKSUM
pode operar sobre uma lista de expressões e retorna o mesmo valor para uma lista especificada. BINARY_CHECKSUM
aplicado sobre duas listas de expressões retorna o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e representação de byte. Nessa definição, os valores nulos de um tipo especificado são considerados como possuidores da mesma representação de byte.
BINARY_CHECKSUM
e CHECKSUM
são funções semelhantes. Elas podem ser usadas para calcular um valor de soma em uma lista de expressões e a ordem das expressões afeta o valor resultante. A ordem das colunas usada para BINARY_CHECKSUM(*)
é a mesma especificada na definição de tabela ou exibição. Essa ordem inclui as colunas computadas.
BINARY_CHECKSUM
e CHECKSUM
retornam valores diferentes para os tipos de dados de cadeia de caracteres, em que a localidade pode fazer com que as cadeias de caracteres com uma representação diferente sejam comparadas como iguais. Os tipos de dados de cadeia de caracteres são
- char
- nchar
- nvarchar
- varchar
ou
- sql_variant (se o tipo base de sql_variant for um tipo de dados string).
Por exemplo, as cadeias de caracteres "McCavity" e "Mccavity" têm diferentes valores BINARY_CHECKSUM
. Por outro lado, para um servidor que não diferencia maiúsculas de minúsculas, CHECKSUM
retorna os mesmos valores de soma de verificação para essas cadeias de caracteres. Você deve evitar a comparação dos valores de CHECKSUM
com os valores de BINARY_CHECKSUM
.
BINARY_CHECKSUM
é compatível com qualquer comprimento do tipo varbinary(max) e até 255 caracteres do tipo nvarchar(max).
Exemplos
Este exemplo usa BINARY_CHECKSUM
para detectar as alterações em uma linha da tabela.
USE AdventureWorks2022;
GO
CREATE TABLE myTable (column1 INT, column2 VARCHAR(256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
UPDATE myTable set column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
Confira também
Funções de agregação (Transact-SQL)
CHECKSUM_AGG (Transact-SQL)
CHECKSUM (Transact-SQL)
HASHBYTES (Transact-SQL)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de