情况是这样的
产品表Product中有一个字段是用来储存产品介绍的,里面储存的全部都是HTML代码,现在里面的一部分 注意事项全部是错误的,要替换成新的 注意事项,我大概描述一下里面的结构大家就知道问题了
原始的
<table cellspacing="0" cellpadding="0" width="100%" border="0">
。。。。。。。。。
<tr>
<td class="FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #007899; TEXT-DECORATION: none" bgcolor="#ccebf4" height="30" style="padding-left: 10px"><span style="font-size: 14px">• 注意事项</span></td>
</tr>
我现在要把这个tr下面的内容全部替换成新的内容,
问题在于我怎么能找到这个TR呢?找到之后我又怎么去分割这个存放HTML的字段吧我要替换的东西替换掉呢???
这种需求用SQL语句要如何实现?
不知正则表达式可以不
可以,但是怎么弄呢- -?
用C#编程处理不可以吗
可以,但是
现在我首先要找到满足我条件的记录,然后我要保留这个记录这个字段的一部分~替换其中一部分,但是替换的一部分只有一小段是可以确认一定有的字符,其他后面的可能是随机的,这个要怎么替换和判断
UPDATE Product set Description = REPLACE(Description,'<tr>...</tr>','NewDescription')
现在我首先要找到满足我条件的记录,然后我要保留这个记录这个字段的一部分~替换其中一部分,但是替换的一部分只有一小段是可以确认一定有的字符,其他后面的可能是随机的,这个要怎么替换和判断
@适渊: 先用Like找出符合条件的记录
如果种类不多就自己多执行几次上面的Update语句就行了
如果是随机的话,那就最好在程序中用正则替换了
根据内容不同,正则也不同,这个正则是替换table下包含“span”和“注意事项”的那个tr内容的
Regex.Replace(file, @"(?<=<table.+?>.+?<tr>)\s+?<td.+?<span.+?>.+?注意事项</span></td>.+?(?=</tr>)", "NewDescription", RegexOptions.IgnoreCase | RegexOptions.Singleline);
update Product set Description='<table cellspacing="0" cellpadding="0" width="100%" border="0">。。。。。。。。。<tr><td bgcolor="#ccebf4" height="30" ><span >• 新注意事项</span></td> </tr>' where Description like '<table cellspacing="0" cellpadding="0" width="100%" border="0">。。。。。。。。。<tr><td bgcolor="#ccebf4" height="30" ><span >&bull%'
这样应该ok的 ,我以前也遇到过这样的问题
现在我首先要找到满足我条件的记录,然后我要保留这个记录这个字段的一部分~替换其中一部分,但是替换的一部分只有一小段是可以确认一定有的字符,其他后面的可能是随机的,这个要怎么替换和判断
@适渊: 还是用like进行匹配,方便的话,留下QQ,方便交流
@wvsy: 634546708 非常感谢
“注意事项”始终会使用
<span style="font-size: 14px"> </span>
包括吗?如果是的话直接寻找 <span 的位置和紧跟着的</span>的位置,替换中间的值就好了。