0

我正在使用 SQL Server 2014。作为更大任务的一部分,我需要从表中检测更新等,因此我正在实现 Hashbytes。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' 附近的语法不正确。

我哪里错了?

4

1 回答 1

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 上使用列别名。

于 2019-09-26T09:38:00.480 回答