Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać Regexp w poleceniach zamiany MySQL?

Jak już wspomnieli inni, nie możesz tego zrobić w MySQL. Jednak wydaje się, że jest to jednorazowa operacja, którą musisz zrobić, więc napisałem ci szybki i brudny mały skrypt php, który wykona tę pracę. Zakłada się, że tabela node_revisions ma kolumnę klucza podstawowego o nazwie „id”. Jeśli nie, edytuj odpowiednio. Nie zapomnij również zmienić hosta bazy danych, nazwy użytkownika, hasła i nazwy bazy danych na górze skryptu, aby pasowały do ​​Twojej konfiguracji.


<?php
$host = '127.0.0.1';
$username = 'root';
$password = 'password';
$database = 'test';

$conn = mysql_connect($host, $username, $password);

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db($database)) {
    echo "Unable to select " . $database . ": " . mysql_error();
    exit;
}

$sql = "SELECT * FROM node_revisions";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    $id = $row['id'];
    $body = $row['body'];
    $teaser = $row['teaser'];
    $body = preg_replace('/http:\/\/.*?\.pdf/', '/migration-update', $body);
    $teaser = preg_replace('/http:\/\/.*?\.pdf/', '/migration-update', $teaser);
    $sql = "UPDATE node_revisions set body='" . mysql_real_escape_string($body) . "', teaser='" . mysql_real_escape_string($teaser) . "' where id=" . $id;
    mysql_query($sql);
}

mysql_free_result($result);
mysql_close($conn);
?>

Zauważ również, że użyłem modyfikatora non-greedy w wyrażeniach regularnych, więc jeśli masz wiele adresów URL pdf w polu treści lub zwiastuna, nie stracisz wszystkiego między nimi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. walidacja i dodawanie danych do tabeli db

  2. PHP:pobierz obraz z MySQL za pomocą PDO

  3. Znacznik czasu i daty w wierszu tabeli MySQL

  4. Jak obliczyć sumę bieżącą w MySQL

  5. BŁĄD 1064 (42000) w MySQL