स्ट्रिंग के भाग को प्रतिस्थापित करते हुए एक स्तंभ मान अपडेट करें


325

मेरे पास MySQL डेटाबेस में निम्नलिखित कॉलम के साथ एक टेबल है

[id, url]

और उर जैसे हैं:

 http://domain1.com/images/img1.jpg

मैं सभी यूआरएल को दूसरे डोमेन में अपडेट करना चाहता हूं

 http://domain2.com/otherfolder/img1.jpg

फ़ाइल का नाम इस प्रकार है।

मुझे कौन सी क्वेरी चलानी चाहिए?


जवाबों:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

प्रासंगिक डॉक्स: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
हाय- मुझे वहाँ की आवश्यकता क्यों है?
गाय कोहेन

14
@GuyCohen क्योंकि अन्यथा क्वेरी तालिका में हर एक पंक्ति को संशोधित करेगी। WHEREखंड क्वेरी केवल कुछ यूआरएल के साथ पंक्तियों को संशोधित करने का अनुकूलन। तार्किक रूप से, परिणाम समान होगा, लेकिन इसके अलावा WHEREऑपरेशन को तेज कर देगा।
Dmytro Shevchenko

3
यह WHEREभी सुनिश्चित करता है कि आप केवल दिए गए उत्तर में या उसके साथ शुरू होने वाले तार के कुछ हिस्सों की जगह ले रहे हैं , प्रभावित होंगे, लेकिन प्रभावित नहीं होंगे। http://etc/etc/string_to_be_replaced.http://domain1.com/images/this/is/a/testfoobar/http://domain1.com/images/
काइल चैलेंजिस

27

REPLACE फ़ंक्शन का उपयोग करने का प्रयास करें :

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

ध्यान दें कि यह मामला संवेदनशील है।


2
@UniversalGrasp यहां बहुत सारे संभावित उत्तर देखें: stackoverflow.com/questions/5656056/…
जोनाथन बर्जरॉन

9

आपको WHERE क्लॉज की आवश्यकता है जो केवल उन रिकॉर्ड्स को प्रतिस्थापित करे जो WHERE क्लॉज की स्थिति के अनुसार है (सभी रिकॉर्ड के विपरीत)। आप आंशिक स्ट्रिंग को इंगित करने के लिए % साइन का उपयोग करते हैं : IE

LIKE ('...//domain1.com/images/%');

सभी रिकॉर्ड का मतलब है कि BEGIN के साथ "...//domain1.com/images/"और उसके बाद कुछ भी है (यह %... के लिए है)

एक और उदाहरण:

LIKE ('%http://domain1.com/images/%')

जिसका अर्थ है कि सभी रिकॉर्ड "http://domain1.com/images/"

स्ट्रिंग के किसी भी हिस्से में ...



1

पहले जांच करनी होगी

चयन करें * कहाँ से universityपाठ्यक्रम_नाम '% और amp%'

इसके बाद, अपडेट करना होगा

अद्यतन विश्वविद्यालय सेट पाठ्यक्रम_नाम = उत्तर दें (पाठ्यक्रम_नाम, 'और amp', 'और') जहां आईडी 1

परिणाम: इंजीनियरिंग और प्रौद्योगिकी = इंजीनियरिंग और प्रौद्योगिकी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.