जवाबों:
अपने तालिका नाम और फ़ील्ड को प्रश्न में बदलें 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]
, "फू", "बार");