替换MySQL数据库列

时间:2015-05-18 08:58:32

标签: mysql sql

我的数据库有一个表格content,其中包含fulltext列,其中我嵌入了以下视频:

<iframe src="//example.com" width="600" height="518" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>

现在,宽度有很多不同的尺寸,为了最大化和规范化所有视频的宽度,我想将其更改为:

width="100%"

我尝试了以下查询但没有成功:

update `#__content` set `fulltext` = replace(`fulltext`,'width="600"','width="100%"') 

但是如何修复各种不同宽度?

运行查询的列全文before

<p style="text-align: justify;">Neste âmbito, pretende-se essencialmente fomentar a compreensão do que é um ativo e um passivo, qual a diferença entre ambos, assim como o que é um gasto e um rendimento, em que demonstrações financeiras se enquadram e que informação se pode retirar das mesmas.</p>

运行查询的列全文after

100% style="text-align: justify;">Neste âmbito, pretende-se essencialmente fomentar a compreensão do que é um ativo e um passivo, qual a diferença entre ambos, assim como o que é um gasto e um rendimento, em que demonstrações financeiras se enquadram e que informação se pode retirar das mesmas.</p>

1 个答案:

答案 0 :(得分:1)

此处如何使用substring_index作为

set @str = '<iframe src="//example.com" width="600" height="518" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
select 
replace(
   @str,replace(
     substring_index(
       substring_index(@str,'width=',-1
       ),' ',1
      ),'"',''
    ),'100%'
) as new_val;

输出

+------------------------------------------------------------------------------------------------------------------------------------------+
| new_val                                                                                                                                  |
+------------------------------------------------------------------------------------------------------------------------------------------+
| <iframe src="//example.com" width="100%" height="518" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> |
+------------------------------------------------------------------------------------------------------------------------------------------+

因此,在上面的查询中,只需将@str替换为您的列名,并使其成为更新命令。

更新命令应为

update `#__content` 
set `fulltext` = replace(
           `fulltext`,replace(
             substring_index(
               substring_index(`fulltext`,'width=',-1
               ),' ',1
              ),'"',''
            ),'100%'
        ) ;

<强>更新 要更新iframe中的内容,需要将substring_index更多链接为

set @str = '
<body>
<img src="/log.jpg" width="300">
<p style="width:200px;">hello</p>
<iframe src="//example.com" width="600" height="518" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';


select 
replace( 
  @str,
  replace(
    substring_index(
      substring_index(
        substring_index(
          substring_index(
             @str,'<iframe',-1
          ),
          '</iframe',1
        ),
        'width=',-1
      ), 
      ' ',1
    ),
    '"',''
   ),
   '100%'
) as new_val;

new_val: 
<body>
<img src="/log.jpg" width="300">
<p style="width:200px;">hello</p>
<iframe src="//example.com" width="100%" height="518" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>

因此更新查询将为

update `#__content` 
set `fulltext`=  
replace( 
  `fulltext`,
  replace(
    substring_index(
      substring_index(
        substring_index(
          substring_index(
             `fulltext`,'<iframe',-1
          ),
          '</iframe',1
        ),
        'width=',-1
      ), 
      ' ',1
    ),
    '"',''
   ),
   '100%'
)