Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để sử dụng Regexp trong MySQL Replace Commands?

Như những người khác đã đề cập, bạn không thể làm điều này trong MySQL. Tuy nhiên, đây có vẻ là thao tác một lần bạn cần làm vì vậy tôi đã viết cho bạn một tập lệnh php nhỏ và nhanh chóng để thực hiện công việc. Nó giả sử bảng node_revisions của bạn có một cột khóa chính được gọi là 'id'. Nếu không, hãy chỉnh sửa cho phù hợp. Ngoài ra, đừng quên thay đổi máy chủ cơ sở dữ liệu, tên người dùng, mật khẩu và tên cơ sở dữ liệu ở đầu tập lệnh để phù hợp với cấu hình của bạn.


<?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);
?>

Cũng xin lưu ý rằng tôi đã sử dụng công cụ sửa đổi không tham lam trên biểu thức chính quy để nếu bạn có nhiều url pdf trong trường nội dung hoặc trường mở đầu, bạn sẽ không mất mọi thứ ở giữa chúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại dữ liệu MySQL nào nên được sử dụng cho Vĩ độ / Kinh độ với 8 chữ số thập phân?

  2. Có bất kỳ giới hạn nào về độ dài của chuỗi trong mysql không?

  3. Lower_case_table_names =1 trên Ubuntu 18.04 không cho phép mysql khởi động

  4. Thủ tục lưu trữ MySql:Làm thế nào để chọn từ bảng thủ tục?

  5. Lỗi MySQL 1170 (42000):Cột BLOB / TEXT được sử dụng trong đặc điểm kỹ thuật chính mà không có độ dài khóa