जवाबों:
अपने तालिका नाम और फ़ील्ड को प्रश्न में बदलें table_nameऔर बदलें field:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;(इसलिए यह 2 खोज नहीं करेगा) ... क्या मैं गलत हूं?
WHEREखंड के आप UPDATEसभी पंक्तियों पर करते हैं ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
उदाहरण के लिए, अगर मैं मार्क द्वारा जॉन की सभी घटनाओं को बदलना चाहता हूं, तो मैं नीचे उपयोग करूंगा,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
और यदि आप किसी अन्य क्षेत्र के मूल्य के आधार पर खोजना और बदलना चाहते हैं तो आप एक CONCAT कर सकते हैं:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
बस यह एक यहाँ है ताकि दूसरों को यह एक ही बार में मिल जाएगा।
मेरे अनुभव में, सबसे तेज़ तरीका है
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
INSTR()तरीका है दूसरी सबसे तेज और छोड़ते हुए WHEREखंड कुल मिलाकर, धीमी है, भले ही स्तंभ अनुक्रमित नहीं है।
बदलें स्ट्रिंग समारोह है कि क्या करेंगे।
update। अन्यथा यह समाधान बहुत बेहतर है क्योंकि इसका उपयोग खेतों को अद्यतन किए बिना किया जा सकता है।
मैंने निम्न कमांड लाइन का उपयोग निम्नानुसार किया: TABLE-NAME सेट FIELD = प्रतिस्थापन (FIELD, 'और', 'और') को अपडेट करें; उद्देश्य को प्रतिस्थापित करना था और उसके साथ ("ए" को कमतर होना चाहिए)। समस्या यह है कि यह डेटाबेस में "और" नहीं मिल सकता है, लेकिन अगर मैं "% और%" की तरह उपयोग करता हूं, तो यह कई अन्य और ands के साथ मिल सकता है जो एक शब्द का हिस्सा हैं या यहां तक कि पहले से ही लोअरकेस हैं।
[field_name], "फू", "बार");