Partilhar via


BINARY_CHECKSUM (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Devolve o valor da soma de verificação binária calculado numa linha de uma tabela ou numa lista de expressões.

Transact-SQL convenções de sintaxe

Sintaxe

BINARY_CHECKSUM ( * | expression [ , ...n ] )

Observação

Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Arguments

*

Especifica que o cálculo cobre todas as colunas da tabela. BINARY_CHECKSUM ignora colunas de tipos de dados não comparáveis no seu cálculo. Tipos de dados não comparáveis incluem:

  • Cursor
  • image
  • ntext
  • texto
  • xml
  • tipos definidos pelo utilizador em tempo comum de execução da linguagem comum (CLR) não comparáveis

expressão

Uma expressão de qualquer tipo. BINARY_CHECKSUM ignora expressões de tipos de dados não comparáveis no seu cálculo.

Tipos de devolução

int

Observações

BINARY_CHECKSUM(*), calculado em qualquer linha de uma tabela, devolve o mesmo valor desde que a linha não seja modificada posteriormente. BINARY_CHECKSUM Satisfaz as propriedades de uma função hash: quando aplicada sobre quaisquer duas listas de expressões, devolve o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e forem iguais quando comparados usando o operador iguais (=).

Para esta definição, dizemos que valores nulos, de um tipo especificado, comparam-se como valores iguais. Se pelo menos um dos valores na lista de expressões mudar, a soma de verificação das expressões também pode mudar. No entanto, esta alteração não é garantida, por isso, para detetar se os valores mudaram, deve usar BINARY_CHECKSUM apenas se a sua aplicação conseguir tolerar uma alteração ocasional em falta. Caso contrário, considere usar HASHBYTES em vez disso. Com um algoritmo de hash MD5 especificado, a probabilidade de devolver HASHBYTES o mesmo resultado, para duas entradas diferentes, é muito menor do que BINARY_CHECKSUM.

BINARY_CHECKSUM pode operar sobre uma lista de expressões, e devolve o mesmo valor para uma lista especificada. BINARY_CHECKSUM aplicado sobre quaisquer duas listas de expressões devolve o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e representação em bytes. Para esta definição, os valores nulos de um tipo especificado são considerados como tendo a mesma representação em bytes.

BINARY_CHECKSUM e CHECKSUM são funções semelhantes. Podem ser usadas para calcular um valor de soma de verificação numa lista de expressões, e a ordem das expressões afeta o valor resultante. A ordem das colunas usada para BINARY_CHECKSUM(*) é a ordem das colunas especificada na definição da tabela ou da vista. Esta ordenação inclui colunas calculadas.

BINARY_CHECKSUM e CHECKSUM devolver valores diferentes para os tipos de dados das cadeias, onde a localização pode fazer com que cadeias com representações diferentes se comparem como iguais. Os tipos de dados em cadeia são:

  • char
  • Nchar
  • nvarchar
  • Varchar
  • sql_variant (se o tipo base de sql_variant for um tipo de dados de cadeia)

Por exemplo, as cadeias McCavity e Mccavity têm valores diferentes BINARY_CHECKSUM . Em contraste, para um servidor insensível a maiúsculas e minúsculas, CHECKSUM devolve os mesmos valores de soma de verificação para essas cadeias. Deves evitar comparar valores CHECKSUM com BINARY_CHECKSUM valores.

BINARY_CHECKSUMsuporta qualquer comprimento de tipo varbinary(max) e até 255 caracteres do tipo nvarchar(n) / nvarchar(max).

Examples

Este exemplo serve BINARY_CHECKSUM para detetar alterações numa linha de 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