BINARY_CHECKSUM (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Ponto de extremidade de análises SQL no Microsoft Fabric Warehouse 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.
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)