在SQL Server中使用空格处理列名

时间:2015-03-05 11:33:54

标签: sql-server sql-server-2008-r2 sql-server-2012

我创建了一个SQL Query来更新各列,其中列名包含空格。如果我作为查询手动运行它,它可以工作:

UPDATE dbo.Survey
SET PhotoPathQ1='(null)'
WHERE "Q1 Photo Taken"='0'

UPDATE dbo.Survey
SET PhotoPathQ2='(null)'
WHERE "Q2 Photo Taken"='0'

UPDATE dbo.Survey
SET PhotoPathQ3='(null)'
WHERE "Q3 Photo Taken"='0'

... and further similar updates

但是,如果我尝试使用SQL Server代理作为Transact-SQL脚本(T-SQL)自动执行此操作,它实际上并没有对我的表执行任何操作,该作业表示它已成功运行但数据尚未更新

任何帮助都将不胜感激。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:3)

看起来语法中有错误,请尝试以此为例:

UPDATE dbo.Survey
SET PhotoPathQ1 = null
WHERE [Q1 Photo Taken] = 0

这假设字段PhotoPathQ1nullable,您实际上想要向其中插入真正的null值,而不是字符串'(null)'

它还假设[Q1 Photo Taken]bitint字段,但如果您在引号中使用它,SQL Server将很乐意处理转换。如果它是一个字符串数据类型,那么你应该在那里留下引号。

您应该在包含空格而不是双引号的字段名称上使用方括号:

[Q1 Photo Taken]