【问题标题】:Update Records in SQL在 SQL 中更新记录
【发布时间】:2014-01-09 12:50:37
【问题描述】:

我有数据库我不知道如何更新列,因为它位于每次调用生成的表上。以下是调用相关列的代码:

select 
    a.itm_num as item_no,
    a.itm_proddesc as title,
    CAST(d.content as varchar(max)) as product_description
from item as a
join assignment as b on b.itm_id = a.itm_id
join attachment as c on c.att_id = b.att_id
join digitalassetcontent as d on d.content_key = c.content_key
where c.att_type like 'text%'

我需要更新 product_description 字段。我们在此列中有数千个条目,这些条目在实际文本前面有 HTML 编码。我需要运行查找和替换以删除文本之前的 html 编码。每个文本前的HTML代码完全一样,这里需要去掉:<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>

我使用@Joel Coehoorn 解决方案运行了以下代码,其中包含我需要更新的内容密钥,它返回了“Msg 4104, Level 16, State 1, Line 13”的错误 无法绑定多部分标识符“d.content”。'

select 
    a.itm_num as item_no,
    a.itm_proddesc as title,
    CAST(d.content as varchar(max)) as product_description
from item as a
join assignment as b on b.itm_id = a.itm_id
join attachment as c on c.att_id = b.att_id
join digitalassetcontent as d on d.content_key = c.content_key
where c.att_type like 'text%'

Update digitalassetcontent
set content = replace(CAST(content as varchar(max)), '<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>','')
where CAST(content as varchar(max)) like '<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>%' AND content_key = 'desc214974236480438500781058983745755010'

谢谢!

马特

【问题讨论】:

    标签: sql replace sql-update


    【解决方案1】:

    这只是digitalassetcontent.content 字段。您应该能够直接在该领域采取行动。该字段的实际类型是什么?

    Update digitalassetcontent
    set content = replace(CAST(d.content as varchar(max)), '<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>','')
    where CAST(d.content as varchar(max)) like '<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>%'
    

    【讨论】:

    • 字段的实际类型是 varbinary 并且最大字符长度显示为 -1 这样我就可以先进行测试并确保一切都符合规定,我将如何仅在某个项目编号上运行您的代码不是所有的项目?让我们以项目编号“AA100”为例,列名称为“item_no”,它是在我的第一篇文章的初始调用中生成的。
    • @MattWeick 我会查找您要测试的特定内容密钥,而不是项目编号。
    • 如果您需要这方面的帮助,您可能希望从数据库中退后一步。
    • 好的,我做了一些挖掘,我需要更新的具体内容密钥是'desc214974236480438500781058983745755010'
    • 我已经对我的原始帖子进行了编辑,请参阅上面的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多