【问题标题】:Repeat remove quotes from 48 fields重复从 48 个字段中删除引号
【发布时间】:2012-03-13 21:28:09
【问题描述】:

下面的这个脚本逐个字段地工作,并删除每个条目开头和结尾的引号,但是如果您有超过 3 或 4 列,则复制、粘贴更改为每个新列名称需要大量的时间。知道如何让这个循环遍历每一列吗?

--Removing quotes back and front from fields where datetime_updated is not blank
UPDATE [Majestic].[dbo].hdiyouth_school_2
SET datetime_updated=left(right(cast(datetime_updated as nVarchar), 
    LEN(cast(datetime_updated as nVarchar))-1),
    LEN(cast(datetime_updated as nVarchar))-2)
WHERE datetime_updated IS NOT NULL AND datetime_updated LIKE '"%"'

【问题讨论】:

  • 对不起,SQL Server Management Studio 2005

标签: sql sql-server-2005 quotes


【解决方案1】:

您可以为每一列自动生成一个查询,方式类似于:

select 
'UPDATE [Majestic].[dbo].hdiyouth_school_2
SET ['+column_name+']=left(right(cast(datetime_updated as nVarchar), 
    LEN(cast(datetime_updated as nVarchar))-1),
    LEN(cast(datetime_updated as nVarchar))-2)
WHERE datetime_updated IS NOT NULL AND datetime_updated LIKE ''"%"'';'
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='Employee' and TABLE_SCHEMA='HumanResources'

【讨论】:

  • 嗨,我如何自动生成它?我在哪里可以获得 TABLE_SCHEMA 的详细信息?
  • 编辑 TABLE_NAME 和 TABLE_SCHEMA 以匹配您要更新的表,并在 SSMS 中针对您的数据库运行。将结果复制并粘贴到新的查询选项卡。 INFORMATION_SCHEMA 视图可以在 SSMS 对象资源管理器中的视图 - 系统视图下的数据库树中找到。
  • 另外请阅读sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/…,以防您将此方法扩展到更复杂的场景。我远离INFORMATION_SCHEMA,因为它们不完整,我宁愿针对同一组元数据进行编码,而不是尝试记住关于我可以从它们那里得到什么以及我需要从其他地方得到什么的规则。
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多