2015-06-22 245 views
1

我收到了一些產品的舊數據,在產品描述中他們將自己的樣式添加到不同的產品中。它大約在8年前製成。 現在我得到了所有他們自己的數據,我需要刪除witdh的樣式。 寬度變化很大,所以我可以是寬度:150px到寬度:300px等。MySQL替換字符串中的變量

<table style="width: 500px;" border="0" cellspacing="1" cellpadding="1"> 

我需要將其刪除,以便在移動設備或平板電腦上縮放時,它會變得反應靈敏。

我的替換應該怎麼樣?我可以使用通配符來解決這個問題,還是隻需要將字符串的其餘部分刪除?

REPLACE(`product_desc`, 'style="width:%"', '') 
+0

不,你不能在替換函數中使用通配符替換。 –

回答

0

如果圖案是相同的,你只有width: Npx;的表,那麼你可以做一些事情如下 -

select 
replace(
    '<table style="width: 500px;" border="0" cellspacing="1" cellpadding="1">', 
    concat(
     'width: ', 
     trim( 
     substring_index(
     substring_index(
      '<table style="width: 500px;" border="0" cellspacing="1" cellpadding="1">','width:',-1 
     ), 
     '"',1 
     ) 
     ) 
    ), 
'') as a ; 

結果是

+-------------------------------------------------------------+ 
| a               | 
+-------------------------------------------------------------+ 
| <table style="" border="0" cellspacing="1" cellpadding="1"> | 
+-------------------------------------------------------------+ 
1 row in set (0.00 sec) 

可以將此轉換爲更新聲明爲

update table_name 
set product_desc = 
replace(
    product_desc, 
    concat(
     'width: ', 
     trim( 
     substring_index(
     substring_index(
      product_desc,'width:',-1 
     ), 
     '"',1 
     ) 
     ) 
    ), 
'') 
+0

工作就像一個魅力 - 謝謝:) – Chornsyld

+0

你是最受歡迎的! –