Вставить хэш-байты Неверный синтаксис рядом с 'MD5' - PullRequest
0 голосов
/ 26 сентября 2019

Я использую SQL Server 2014. В рамках более масштабной задачи мне нужно обнаруживать обновления и т. Д. Из таблицы, поэтому я использую хэш-байты.Поле Hasbytes определено как varbinary(MAX).

Это мой SQL:

INSERT INTO tbl_People
  SELECT
    id,
    Name,
    Add1,
    Add2,
    Add3,
    HashValue as Hashbytes('MD5',CONCAT('|',Name, Add1, Add2, Add3))
from tbl_PeopleSource

Однако я просто продолжаю получать сообщение об ошибке:

Неверный синтаксисоколо 'MD5'.

Где я иду не так?

1 Ответ

1 голос
/ 26 сентября 2019

Отсутствует запятая перед псевдонимом HashValue, чтобы отделить Add3 от следующего столбца.Также псевдоним инвертирован, должен быть <expression> as AliasName.

Add3, -- Here comma
Hashbytes('MD5',CONCAT('|',Name, Add1, Add2, Add3)) as HashValue -- Inverted alias

Также рекомендуется перечислять столбец вставленной таблицы, чтобы порядок не интерпретировался неправильно:

INSERT INTO tbl_People (
    ID,
    Name,
    Col1,
    Col2,
    Col3,
    HashValue)
SELECT
    ...

Существует несколько способов использовать псевдонимы столбцов в SQL Server.

...