我正在使用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”附近的语法不正确。
我要去哪里错了?
答案 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个列别名。