在 SQL 服务器中处理带有空格的列名

Handling column names with spaces in SQL Server

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

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 Agent 作为 Transact-SQL 脚本 (T-SQL) 自动执行此操作,它实际上不会对我的 table,作业说它已 运行 成功,但数据尚未更新。

如有任何帮助,我们将不胜感激。

我是否遗漏了一些明显的东西?

看起来你的语法有误,试试这个例子:

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

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

它还假定 [Q1 Photo Taken] 是一个 bitint 字段,尽管 SQL 如果您将其放在引号中,服务器将很乐意处理转换。如果它是字符串数据类型,那么您应该将引号留在那里。

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

[Q1 Photo Taken]