在 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
这假设字段 PhotoPathQ1
是 nullable
并且您实际上想要向其中插入一个真实的 null
值而不是字符串 '(null)'
.
它还假定 [Q1 Photo Taken]
是一个 bit
或 int
字段,尽管 SQL 如果您将其放在引号中,服务器将很乐意处理转换。如果它是字符串数据类型,那么您应该将引号留在那里。
您应该在包含空格而不是双引号的字段名称上使用方括号:
[Q1 Photo Taken]
我创建了一个 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
这假设字段 PhotoPathQ1
是 nullable
并且您实际上想要向其中插入一个真实的 null
值而不是字符串 '(null)'
.
它还假定 [Q1 Photo Taken]
是一个 bit
或 int
字段,尽管 SQL 如果您将其放在引号中,服务器将很乐意处理转换。如果它是字符串数据类型,那么您应该将引号留在那里。
您应该在包含空格而不是双引号的字段名称上使用方括号:
[Q1 Photo Taken]