Вычислите Хеш или Контрольную сумму для таблицы в SQL Server

Я сказал бы, что "находка" фокусируется на получении единственного, точного совпадения. Как в примере выше, Вы "находите" идеальное задание PHP.

OTOH, Вы "ищете" задания, которые соответствуют Вашим критериям. Поиск - то, что Вы делаете, когда Вы хотите пастись через несколько результатов. "Поиск" возвращает страницы результатов. "Находка" ближе к, "я чувствую себя удачливым".

, Конечно, условия привыкают попеременно иногда. Но, я думаю, что это - сущность различия.

27
задан marc_s 13 October 2009 в 15:08
поделиться

1 ответ

Вы можете использовать CHECKSUM_AGG . Требуется только один аргумент, поэтому вы можете выполнить CHECKSUM_AGG (CHECKSUM (*)) - но это не работает для вашего типа данных XML, поэтому вам придется прибегнуть к динамическому SQL.

Вы можете динамически сгенерировать список столбцов из INFORMATION_SCHEMA.COLUMNS , а затем вставить int в шаблон:

SELECT @column_list = COALESCE(@column_list + ', ', '')
        + /* Put your casting here from XML, text, etc columns */ QUOTENAME(COLUMN_NAME)
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = @table_name
    AND TABLE_SCHEMA = @schema_name

DECLARE @template AS varchar(MAX)
SET @template = 'SELECT CHECKSUM_AGG(CHECKSUM({@column_list})) FROM {@schema_name}.{@table_name}'

DECLARE @sql AS varchar(MAX)
SET @sql = REPLACE(REPLACE(REPLACE(@template
    '{@column_list}', @column_list),
    '{@schema_name}', @schema_name),
    '{@table_name}', @table_name)

EXEC ( @sql )
23
ответ дан 28 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: