2016-07-29 15 views
-1

Ich habe Felder wie diese Tabelle in MySQL-Datenbank,Substring-Ersatz in 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>

kann mir jemand sagen, wie nur dieser Zeichenfolge Teil „id entfernen (.....) wo Werte in ID nicht alle Felder gleich sind. Mit mysql-Abfrage entfernen.

+0

Können Sie bitte ein Beispiel für gewünschtes Ergebnis liefern? – berty

+0

MariaDB hat 'regexp_replace()'. –

+0

Entfernen Sie diesen Teil der Zeichenfolge "id (...);" in allen Spalten. mit kurzem Befehl ... –

Antwort

0

Sollte somthings wie diese

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

Sie tun mit 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

Sehr seltsam Anforderung; Nachdem Sie diese Informationen gelöscht haben, ist jede Zeile identisch mit Ausnahme des Werts unter der Überschrift No. Hier ist eine Abfrage, die das tun (obwohl ich sehe nicht, warum Sie wollen würde):

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

Neueste Wort aus, so dass regex replace is not a function in mysql ist. Ihre Alternative, wenn Sie eine echte Regex ersetzen möchten, ist die Verwendung von PHP/Python/etc.

0

MySQL hat keine Funktion für reguläre Ausdrücke Ersatz zu tun.

Hier ist ein Beispiel für eine Abfrage, die das spezifische Beispiel in Ihrer Frage ausführt. Aber wenn Sie andere Fälle (wie mehrere Ersetzungen in einer einzigen Zeichenfolge) haben, muss dies als Richtlinie dienen.

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

Demo: SQLFiddle

Es wäre einfacher, diese in einer beliebigen Programmiersprache zu tun, die Ersatz für reguläre Ausdrücke String unterstützt. Zum Beispiel, holen Sie die Zeichenfolge wie sie ist, und machen Sie die Ersetzung in PHP.


Hier ist ein Beispiel:

$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

Wie kann ich es mit PHP machen, können Sie mir Referenz geben –