2011-02-17 18 views
7

मेरे पास है जो इस तरह नामित कुछ varchar फ़ील्ड होते हैं एक मेज:mysql खोज स्ट्रिंग/बदलें

image_fullres | image_highres | image_mediumres | image_lowres |

image_thumbnail मैं वर्तमान में है, इसलिए image_fullres इन क्षेत्रों (पंक्ति से भिन्न) से प्रत्येक के लिए एक ही मूल्य हैimage_lowres और इतने पर के रूप में ही मार्ग होता है।

इन रास्तों के लिए एक उदाहरण मान होगा http://mysite.com/images/image1.jpg

मैं, एक अलग और उचित पथ नाम शामिल करने के लिए इन क्षेत्रों में से प्रत्येक करना चाहते हैं तो:

  • image_fullresका महत्व है http://mysite.com/images/fullres/image1.jpg
  • image_highres का मूल्य है http://mysite.com/images/highres/image1.jpg
  • image_mediumreshttp://mysite.com/images/mediumres/image1.jpg

और इतने पर की महत्व है ..

चूंकि मेरा सभी डेटा पहले से ही डेटाबेस में डुप्लिकेट पथ के साथ डेटाबेस में है, तो मैं कौन सा एसक्यूएल निष्पादित कर सकता हूं जो प्रत्येक फ़ील्ड के डेटा को उचित पथ में बदल देगा?

उत्तर

12

उदाहरण:

UPDATE table 
SET image_fullres = REPLACE(image_fullres, 'http://mysite.com/images/', 'http://mysite.com/images/fullres/') 

यह अपनी तालिका में सभी पंक्तियों के लिए image_fullres स्तंभ अद्यतन करेगा। आप प्रत्येक कॉलम के लिए ऐसा एक कथन कर सकते हैं, या उन्हें एक साथ जोड़ सकते हैं:

UPDATE table 
SET 
image_fullres = REPLACE(image_fullres, 'http://mysite.com/images/', 'http://mysite.com/images/fullres/'), 
image_highres = REPLACE(image_highres, 'http://mysite.com/images/', 'http://mysite.com/images/highres/'), 
... 
... 
संबंधित मुद्दे