MySQL में कॉमा-सूची वाले कॉलम में विशिष्ट मान को खोजकर बदलने के लिए SUBSTRING_INDEX() और CONCAT() का संयोजन उपयोग करें।
उदाहरण: 'John' को 'Adam' से बदलें
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable (
-> ListOfName TEXT
-> );
2. डेटा डालें
mysql> INSERT INTO DemoTable VALUES(
-> 'Carol,Sam,John,David,Bob,Mike,Robert,John,Chris,James,Jace');
3. पहला 'John' बदलें
mysql> UPDATE DemoTable
-> SET ListOfName = CONCAT(
-> SUBSTRING_INDEX(ListOfName, 'John', 2),
-> 'Adam',
-> SUBSTRING_INDEX(ListOfName, 'John', -1)
-> );
4. परिणाम
mysql> SELECT * FROM DemoTable;
+------------------------------------------------------------+ | ListOfName | +------------------------------------------------------------+ | Carol,Sam,John,David,Bob,Mike,Robert,Adam,Chris,James,Jace | +------------------------------------------------------------+
कैसे काम करता है
SUBSTRING_INDEX(str, delim, 2)- दूसरे 'John' से पहले का भाग'Adam'- नया मानSUBSTRING_INDEX(str, delim, -1)- पहले 'John' के बाद का भाग- प्रभावी रूप से दूसरे 'John' को बदलता है
पहला मिलान बदलने के लिए
UPDATE DemoTable
SET ListOfName = CONCAT(
SUBSTRING_INDEX(ListOfName, 'John', 1),
'Adam',
SUBSTRING_INDEX(ListOfName, 'John', -1)
);
सभी मिलान बदलने के लिए (MySQL 8.0+)
UPDATE DemoTable SET ListOfName = REPLACE(ListOfName, 'John', 'Adam');
चेतावनी
यह स्ट्रिंग मैनिपुलेशन है। आंशिक मिलान (जैसे 'Johnson') भी प्रभावित हो सकते हैं। बेहतर डिज़ाइन के लिए सामान्यीकृत टेबल (एक पंक्ति प्रति मान) उपयोग करें।