在“ MD5”附近插入哈希字节不正确的语法

时间:2019-09-26 09:34:36

标签: sql sql-server hashbytes

我正在使用SQL Server2014。作为一项较大任务的一部分,我需要从表中检测更新等,因此需要实现哈希字节。 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 个答案:

答案 0 :(得分:1)

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上有multiple ways个列别名。