यदि संभव हो तो मैं PHP के साथ ऐसा करूंगा। दुर्भाग्य से MySQL दुर्भाग्यवश नियमित अभिव्यक्तियों में मिलान करने वाले हिस्सों को कैप्चर करने की अनुमति नहीं देता है। या और भी बेहतर: आप दो इस तरह, उदाहरण के लिए गठजोड़ कर सकते हैं:
$emails = fetchAllDistinctEmailsIntoAnArray();
# Make the array int-indexed:
$emails = array_values($emails);
# convert the mails
$replacedEmails = preg_replace('/xx$/', 'yy', $emails);
# create a new query
$cases = array();
foreach ($emails as $key => $email) {
# Don't forget to use mysql_escape_string or similar!
$cases[] = "WHEN '" . escapeValue($email) .
"' THEN '" . escappeValue(replacedEmails[$key]) . "'";
}
issueQuery(
"UPDATE `YourTable`
SET `emailColumn` =
CASE `emailColumn`" .
implode(',', $cases) .
" END CASE");
ध्यान दें कि यह समाधान बहुत कुछ समय लगेगा और आप स्मृति से बाहर चला सकते हैं या मारा निष्पादन सीमा अगर आप अपने डेटाबेस में कई प्रविष्टियाँ । आप इस स्क्रिप्ट के लिए स्मृति सीमा को बदलने के लिए ignore_user_abort()
और ini_set()
पर देखना चाहेंगे।
अस्वीकरण: स्क्रिप्ट का परीक्षण नहीं किया गया! कोड को समझने/परीक्षण किए बिना उपयोग न करें (आपके डीबी को गड़बड़ कर सकता है)।