BINARY_CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve el valor binario de suma de comprobación calculado en una fila de una tabla o en una lista de expresiones.Returns the binary checksum value computed over a row of a table or over a list of expressions.

Icono de vínculo a artículo Convenciones de sintaxis de Transact-SQLArticle link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

*
Especifica que el cálculo abarca todas las columnas de tabla.Specifies that the computation covers all the table columns. BINARY_CHECKSUM no incluye en el cálculo las columnas que tienen tipos de datos no comparables.BINARY_CHECKSUM ignores columns of noncomparable data types in its computation. Entre los tipos de datos no comparables están los siguientes:Noncomparable data types include

  • cursorcursor
  • imagenimage
  • ntextntext
  • textotext
  • xmlxml

y los tipos de datos no comparables definidos por el usuario de CLR (Common Language Runtime).and noncomparable common language runtime (CLR) user-defined types.

expressionexpression
Una expresión de cualquier tipo.An expression of any type. BINARY_CHECKSUM no incluye en el cálculo las expresiones que tienen tipos de datos no comparables.BINARY_CHECKSUM ignores expressions of noncomparable data types in its computation.

Tipos devueltosReturn Types

intint

NotasRemarks

BINARY_CHECKSUM(*), calculado en cualquier fila de una tabla, devuelve el mismo valor siempre que la fila no se modifique posteriormente.BINARY_CHECKSUM(*), computed on any row of a table, returns the same value as long the row isn't modified later. 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 (=).BINARY_CHECKSUM satisfies the properties of a hash function: when applied over any two lists of expressions, returns the same value if the corresponding elements of the two lists have the same type and are equal when compared using the equals (=) operator. En esta definición, se dice que la comparación de valores NULL de un tipo específico se consideran como iguales.For this definition, we say that null values, of a specified type, compare as equal values. 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,If at least one of the values in the expression list changes, the expression checksum can also change. 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.However, this change isn't guaranteed, and so to detect whether values have changed, we recommend use of BINARY_CHECKSUM only if your application can tolerate an occasional missed change. De lo contrario, es más aconsejable usar HASHBYTES.Otherwise, consider using HASHBYTES instead. 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.With a specified MD5 hash algorithm, the probability that HASHBYTES will return the same result, for two different inputs, is much lower than BINARY_CHECKSUM.

BINARY_CHECKSUM puede operar en una lista de expresiones y devuelve el mismo valor para una lista especificada.BINARY_CHECKSUM can operate over a list of expressions, and it returns the same value for a specified list. 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.BINARY_CHECKSUM applied over any two lists of expressions returns the same value if the corresponding elements of the two lists have the same type and byte representation. Para esta definición, los valores NULL de un tipo especificado se considera que tienen la misma representación de bytes.For this definition, null values of a specified type are considered to have the same byte representation.

BINARY_CHECKSUM y CHECKSUM son funciones similares.BINARY_CHECKSUM and CHECKSUM are similar functions. 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.They can be used to compute a checksum value on a list of expressions, and the order of expressions affects the resultant value. 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.The order of columns used for BINARY_CHECKSUM(*) is the order of columns specified in the table or view definition. Esta ordenación incluye las columnas calculadas.This ordering includes computed columns.

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.BINARY_CHECKSUM and CHECKSUM return different values for the string data types, where locale can cause strings with different representation to compare as equal. Los tipos de datos String son los siguientes:The string data types are

  • charchar
  • ncharnchar
  • nvarcharnvarchar
  • varcharvarchar

o Administrador de configuración deor

  • sql_variant (si el tipo base de sql_variant es un tipo de datos String).sql_variant (if the base type of sql_variant is a string data type).

Por ejemplo, las cadenas "McCavity" y "Mccavity" tienen valores BINARY_CHECKSUM distintos.For example, the strings "McCavity" and "Mccavity" have different BINARY_CHECKSUM values. 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.In contrast, for a case-insensitive server, CHECKSUM returns the same checksum values for those strings. Debe evitar la comparación de valores CHECKSUM con BINARY_CHECKSUM.You should avoid comparison of CHECKSUM values with BINARY_CHECKSUM values.

BINARY_CHECKSUM admite cualquier longitud de tipo varbinary(max) y un máximo de 255 caracteres de tipo nvarchar(max) .BINARY_CHECKSUM supports any length of type varbinary(max) and up to 255 characters of type nvarchar(max).

EjemplosExamples

Este ejemplo utiliza BINARY_CHECKSUM para detectar cambios en una fila de tabla.This example uses BINARY_CHECKSUM to detect changes in a table row.

USE AdventureWorks2012;  
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énSee also

Funciones de agregado (Transact-SQL)Aggregate Functions (Transact-SQL)
CHECKSUM_AGG (Transact-SQL)CHECKSUM_AGG (Transact-SQL)
CHECKSUM (Transact-SQL)CHECKSUM (Transact-SQL)
HASHBYTES (Transact-SQL)HASHBYTES (Transact-SQL)