更新SQL Server中的列值时出错?

时间:2014-07-04 03:45:14

标签: sql-server

我正在尝试以下方法:

update Question set CreatedBy = "02712b8a-1f32-49bc-911b-d3ee4d0c9d90"

但是这给了我一个错误:

Invalid column name '02712b8a-1f32-49bc-911b-d3ee4d0c9d90'.

当我尝试以下操作时效果很好并列出值:

select createdby from question

我已经检查过,根据我的理解,我的更新语法是正确的。任何人都可以看到可能出错的地方。为什么假设长字符串是列名。请注意,CreatedBy的数据类型是UNIQUEIDENTIFIER。

3 个答案:

答案 0 :(得分:0)

QUOTED_IDENTIFIER必须开启。有了这个,SQL Server遵循ANSI标准,该标准规定双引号(")用于标识符,单引号(')用于字符串文字。因此,它将02712b8a-1f32-49bc-911b-d3ee4d0c9d90解释为列名,而不是您想要的字符串值;您的查询与:

同义
update Question set CreatedBy = [02712b8a-1f32-49bc-911b-d3ee4d0c9d90]

解决方案 - 改为使用单引号:

update Question set CreatedBy = '02712b8a-1f32-49bc-911b-d3ee4d0c9d90'

答案 1 :(得分:0)

我认为问题是双引号。试试这个

update Question set CreatedBy = '02712b8a-1f32-49bc-911b-d3ee4d0c9d90'

答案 2 :(得分:0)

因为您要将varchar值与字符串值进行比较&在sql字符串中应该用单引号

编写

问题是双引号,而是使用单引号。

update question set createdby = 'your value goes here'

感谢

希望它有效