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.