Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL रिप्लेस कमांड्स में Regexp का उपयोग कैसे करें?

जैसा कि अन्य ने पहले ही उल्लेख किया है, आप इसे MySQL में नहीं कर सकते हैं। हालांकि, यह एक बार का ऑपरेशन प्रतीत होता है जो आपको करने की आवश्यकता है इसलिए मैंने आपको काम करने के लिए एक त्वरित और गंदी छोटी PHP स्क्रिप्ट लिखी है। यह मानता है कि आपकी node_revisions तालिका में 'id' नामक प्राथमिक कुंजी कॉलम है। यदि नहीं, तो उचित रूप से संपादित करें। साथ ही, स्क्रिप्ट के शीर्ष पर डेटाबेस होस्ट, उपयोगकर्ता नाम, पासवर्ड और डेटाबेस नाम को अपने कॉन्फ़िगरेशन से मेल खाने के लिए बदलना न भूलें।


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

यह भी ध्यान दें कि मैंने रेगुलर एक्सप्रेशन पर एक गैर-लालची संशोधक का उपयोग किया है ताकि यदि आपके पास एक बॉडी या टीज़र फ़ील्ड में कई पीडीएफ यूआरएल हैं, तो आप उनके बीच में सब कुछ नहीं खोएंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL से पंक्तियाँ प्रदर्शित करें जहाँ एक डेटाटाइम अगले घंटे के भीतर है

  2. PHP/MySQL के साथ मैसेजिंग सिस्टम

  3. फॉरवर्ड इंजीनियरिंग MySQL कार्यक्षेत्र त्रुटि 1064

  4. MySQL:एंबेडेड JSON बनाम टेबल

  5. MySQL - इकाई:तालिका 'TableDetails' में कॉलम 'IsPrimaryKey' के लिए मान DBNull है