BINARY_CHECKSUM (Transact-SQL)
Se aplica a: Sql Server
Azure SQL Database
Azure SQL Instancia administrada
punto de conexión de SQL Analytics de Azure Synapse Analytics
en Microsoft Fabric
Warehouse en Microsoft Fabric
Devuelve el valor binario de suma de comprobación calculado en una fila de una tabla o en una lista de expresiones.
Convenciones de sintaxis de Transact-SQL
Sintaxis
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Nota:
El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
Argumentos
*
Especifica que el cálculo abarca todas las columnas de tabla. BINARY_CHECKSUM no incluye en el cálculo las columnas que tienen tipos de datos no comparables. Entre los tipos de datos no comparables están los siguientes:
- cursor
- image
- ntext
- text
- xml
y los tipos de datos no comparables definidos por el usuario de CLR (Common Language Runtime).
expression
Una expresión de cualquier tipo. BINARY_CHECKSUM no incluye en el cálculo las expresiones que tienen tipos de datos no comparables.
Tipos de valor devuelto
int
Observaciones
BINARY_CHECKSUM(*)
, calculado en cualquier fila de una tabla, devuelve el mismo valor siempre que la fila no se modifique posteriormente. BINARY_CHECKSUM
cumple las propiedades de una función hash: si se aplica sobre dos listas de expresiones, devuelve el mismo valor si los elementos correspondientes de las dos listas tienen el mismo tipo y son iguales cuando se comparan utilizando el operador igual (=). En esta definición, se dice que la comparación de valores NULL de un tipo específico se consideran como iguales. Si al menos uno de los valores de la lista de expresiones cambia, la suma de comprobación de la expresión también puede cambiar, Sin embargo, este cambio no se garantiza, así que para detectar si los valores han cambiado, se recomienda el uso de BINARY_CHECKSUM
solo si su aplicación puede tolerar la ausencia de cambio ocasional. De lo contrario, es más aconsejable usar HASHBYTES
. Con un algoritmo hash MD5 especificado, la probabilidad de que HASHBYTES
devuelva el mismo resultado, para dos entradas diferentes, es mucho menor en comparación con BINARY_CHECKSUM
.
BINARY_CHECKSUM
puede operar en una lista de expresiones y devuelve el mismo valor para una lista especificada. BINARY_CHECKSUM
aplicado a dos listas de expresiones cualquiera devuelve el mismo valor si los elementos correspondientes de ambas listas tienen el mismo tipo y la misma representación de bytes. Para esta definición, los valores NULL de un tipo especificado se considera que tienen la misma representación de bytes.
BINARY_CHECKSUM
y CHECKSUM
son funciones similares. se pueden utilizar para calcular un valor de suma de comprobación en una lista de expresiones; el orden de las expresiones afecta al valor del resultado. El orden de las columnas usado para BINARY_CHECKSUM(*)
es el orden de las columnas especificado en la definición de la tabla o la vista. Esta ordenación incluye las columnas calculadas.
BINARY_CHECKSUM
y CHECKSUM
devuelven valores distintos para los tipos de datos de cadena, donde la configuración regional puede hacer que cadenas con una presentación distinta se comparen como iguales. Los tipos de datos String son los siguientes:
- char
- nchar
- nvarchar
- varchar
o
- sql_variant (si el tipo base de sql_variant es un tipo de datos String).
Por ejemplo, las cadenas "McCavity" y "Mccavity" tienen valores BINARY_CHECKSUM
distintos. Por el contrario, en un servidor que no distingue entre mayúsculas y minúsculas, CHECKSUM
devuelve los mismos valores de suma de comprobación para ambas cadenas. Debe evitar la comparación de valores CHECKSUM
con BINARY_CHECKSUM
.
BINARY_CHECKSUM
admite cualquier longitud de tipo varbinary(max) y un máximo de 255 caracteres de tipo nvarchar(max).
Ejemplos
Este ejemplo utiliza BINARY_CHECKSUM
para detectar cambios en una fila de tabla.
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
Vea también
Funciones de agregado (Transact-SQL)
CHECKSUM_AGG (Transact-SQL)
CHECKSUM (Transact-SQL)
HASHBYTES (Transact-SQL)
Comentaris
https://aka.ms/ContentUserFeedback.
Properament: al llarg del 2024 eliminarem gradualment GitHub Issues com a mecanisme de retroalimentació del contingut i el substituirem per un nou sistema de retroalimentació. Per obtenir més informació, consulteu:Envieu i consulteu els comentaris de