मैं एक क्षेत्र में एक निश्चित स्ट्रिंग की मांग कर रहा हूं और इसे एक नए स्ट्रिंग के साथ बदलना चाहता हूं। विशेष रूप से, मैं चाहता हूं कि एक URL के सभी संदर्भों को दूसरे URL में बदल दिया जाए। मैंने इस SQL स्टेटमेंट को तैयार किया है और इसे mysql>
MySQL कम्युनिटी सर्वर 5.1.54 का उपयोग करके CentOS 5.5 पर एक प्रॉम्प्ट पर चला रहा हूं।
update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');
प्रतिक्रिया है:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 618 Changed: 0 Warnings: 0
मैं कैसे ट्रैक कर सकता हूं कि कोई बदलाव क्यों नहीं किया जा रहा है?
संपादित करें 1:
हारून बर्ट्रेंड के लिए धन्यवाद, मुझे पता चला कि REPLACE()
वाइल्डकार्ड को संभाल नहीं सकते हैं और मैं इसका पूरी तरह से गलत उपयोग कर रहा था (सोचें: लापता WHERE
क्लॉज)। यहाँ मेरा सुधार कथन है:
UPDATE [table]
SET [column] =
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
WHERE
[column]
LIKE
'%companydomain.com%';
जिसके लिए मुझे पुराने, परिचित मिले:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 167 Changed: 0 Warnings: 0
मुझ से ऐसी कौनसी गलती हो जाएगी?
संपादित करें 2:
मैं आपको बताऊंगा कि मैं क्या गलत कर रहा था !! मैं मान्यताओं पर सवाल नहीं उठा रहा था। मेरी धारणा यह थी कि जिस स्ट्रिंग को मैं बदल रहा था, वह सभी निचले मामलों में थी। WHERE क्लॉज उन सभी चीजों को वापस कर रहा था जो दिखती थींLIKE %companydomain.com%
। जिसमें CompanyDomain.com, CoMpAnYdOmAiN.com और आदि जैसे सभी कैपिटलाइज़ेशन परमिट शामिल हैं।
यह उस पर से गुजर गया, REPLACE()
जिसके बाद companydomain.com के लिए सख्ती से देख रहा था, फिर companydomain.org से इसे बदल दिया।
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
इसलिए बेशक मेरे रिकॉर्ड वापस किए जा रहे थे, लेकिन कुछ भी बदला नहीं जा रहा था। एक बार जब मैंने REPLACE()
पूंजीकरण को ध्यान में रखा, तो सभी रिकॉर्ड अपडेट किए गए और ऐसा प्रतीत हुआ कि सब ठीक है। REPLACE()
मेरे परिदृश्य का सही सिंटैक्स इस प्रकार था:
REPLACE (
[column],
'CompanyDomain.com',
'companydomain.org' )