एक अद्यतन सेट रिपोर्ट () कथन पंक्तियों से क्यों मेल खाता है, लेकिन कोई भी नहीं बदलता है और कोई चेतावनी नहीं देता है?


9

मैं एक क्षेत्र में एक निश्चित स्ट्रिंग की मांग कर रहा हूं और इसे एक नए स्ट्रिंग के साथ बदलना चाहता हूं। विशेष रूप से, मैं चाहता हूं कि एक 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' )

जवाबों:


12

REPLACEवाइल्डकार्ड के साथ उस तरह से नहीं खेलता है। मुझे लगता है कि आपका मतलब है:

UPDATE [table] 
  SET [column] = REPLACE([column],'TLD.com','TLD.org')
  WHERE [column] LIKE '%TLD.com%';

आपके पास कोई WHEREखंड नहीं है, इसलिए उसने 618 पंक्तियों को अपडेट करने की कोशिश की , लेकिन %TLD.com%उस कॉलम में कोई उदाहरण नहीं मिला । यह देखने के लिए कि कौन सी पंक्तियों को प्रभावित किया जाना चाहिए, SELECTइसके बजाय चलाएं :

SELECT [column], REPLACE([column], 'TLD.com', 'TLD.org') AS new_value
  FROM [table]
  WHERE [column] LIKE '%TLD.com%';

0

सबसे पहले, हमें एक selectक्वेरी का उपयोग करके जांचना होगा :

SELECT * FROM colleges
WHERE course_name LIKE '%&amp%'

अगला, हमें अपडेट करना होगा:

UPDATE colleges
SET course_name = REPLACE(course_name, '&amp', '&')
WHERE id = 1

परिणाम: Cloud &amp Enterprise ComputingCloud & Enterprise Computing

अंत में, हमें सभी के लिए आवेदन करना होगा:

UPDATE colleges
SET course_name = REPLACE(course_name, '&amp', '&')

परिणाम: Corporate &amp Insolvency LawCorporate & Insolvency Law

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