2013-12-20 85 views
0

我有数据库我找不出如何更新列,因为它是在每次调用生成的表上。以下是调用相关列的代码:更新记录在SQL

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编码的entrys。我需要运行一个查找和替换来删除文本之前的html编码。每个文本之前的HTML代码是完全一样的,这里是需要删除的内容:<STYLE>H1{font-weight:bold}H1{font-size: 14pt}OL</STYLE><H1>Product Description</H1>

我用@Joel Coehoorn解决方案运行了下面的代码,并带有需要更新的内容密钥,并且它启动了'消息4104,级别16,状态1,行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' 

谢谢!

马特

回答

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>%' 
+0

领域的实际类型是VARBINARY和最大字符长度表示-1 只是让我可以测试第一,并确保一切是犹太教,我将如何运行上面只是对某一个项目编号和代码不是所有的项目?例如,我们使用项目编号“AA100”,在我的第一篇文章中初始调用中生成的列名被称为“item_no”。 –

+0

@MattWeick我会查找您要测试的特定内容密钥,而不是项目编号。 –

+0

如果您需要帮助,则可能需要退出数据库。 –