2016-07-29 54 views
-1

我有場這樣的表mysql數據庫,子串替換在MySQL

<table border=1 ><tr><td>No</td><td>Value</td></tr> 
 
<tr><td>1</td><td>System Code id(19032809128); unique list system</td></tr> 
 
    <tr><td>2</td><td>System Code id(526371576351726); unique list system</td></tr> 
 
    <tr><td>3</td><td>System Code id(162837120831092); unique list system</td></tr> 
 
    <tr><td>4</td><td>System Code id(31-329-103912); unique list system</td></tr> 
 
</table>

可有人告訴我,如何刪除僅此字符串的一部分「ID(..... );」每個字段中id的值不相同。用mysql查詢刪除。

+0

能否請您提供需要的結果的一個例子嗎? – berty

+0

MariaDB有'regexp_replace()'。 –

+0

刪除這部分字符串,「id(...);」在所有列中。用簡短的命令... –

回答

0

這樣

select No, concat('System Code (',Your_value_column , ') unique list system') as Value 
from your_table; 
0

你做PHP

echo "<table border='1'> 
    <tr> 
    <th>No</th> 
    <th>Value</th> 
    </tr>"; 

    while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['No'] . "</td>"; 
    echo "<td>" . $row['Value'] . "</td>"; 
    echo "</tr>"; 
    } 
    echo "</table>"; 

0

很奇怪的要求;除去該信息後,除標題No下的值外,每行都是相同的。這裏有一個查詢,將做到這一點(雖然我不明白你爲什麼會想):

select No, 'System Code unique list system' as Value from table where 1; 

最新的Word從SO是regex replace is not a function in mysql。所以你的選擇,如果你想做一個真正的正則表達式替換,就是使用php/python/etc。

0

MySQL的應該是somthings不具備的功能做正則表達式替換。

下面是一個查詢的例子,在你的問題中做了具體的例子。但是如果你有其他的情況(比如用一個字符串做多個替換),這必須作爲指導。

SELECT no, CONCAT(
    SUBSTRING(value, 1, LOCATE('id(', value)-1), 
    SUBSTRING(value, LOCATE(');', value)+3)) AS value 
FROM mytable; 

演示:SQLFiddle

這將是更容易做到這一點在支持正則表達式字符串替換任何編程語言。例如,按原樣獲取字符串,然後在PHP中進行替換。


下面是一個例子:

$pdo = new PDO(...); 

$stmt = $pdo->query("SELECT no, value FROM mytable"); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $no = $row["no"]; 
    $value = preg_replace("/id\\([0-9-]+\\); /", "", $row["value"]); 
    print "<tr><td>$no</td><td>$value</td></tr>\n"; 
} 
+0

我怎麼用PHP做到這一點,你可以給我參考 –