SQL में प्रतिस्थापित का उपयोग करना


13

मेरे पास एक मेज है और मुझे कुछ नामों को अपडेट करने की आवश्यकता है लेकिन मैं तालिका के बारे में सोच रहा था

निम्नलिखित प्रश्न:

क्या दोनों ऐसा ही करेंगे?

QUERY1

Update mytable
Set Name = Replace(Name,'Jeff','Joe')

QUERY2

Update mytable
Set Name = 'Joe'
where Name = 'Jeff'

जवाबों:


11

नहीं, ऐसा नहीं है।

पहली स्ट्रिंग पूरे स्ट्रिंग के भीतर स्ट्रिंग की तलाश करती है (देखें बदलें () " एक स्ट्रिंग के दूसरे मान के साथ निर्दिष्ट स्ट्रिंग मान की सभी घटनाओं को प्रतिस्थापित करता है "), दूसरा सटीक स्ट्रिंग के लिए दिखता है।

यदि आपके पास जैसे रिकॉर्ड हैं JeffJoe, तो पहली क्वेरी देगी JoeJoe, दूसरी क्वेरी JeffJoe(बिना किसी संशोधन के) देगी ।


25

नहीं, वे एक ही काम नहीं करेंगे।

  1. SQL इंजन द्वारा आवश्यक प्रयास की मात्रा पूरी तरह से अलग है। पहली क्वेरी में, इंजन को प्रत्येक पंक्ति से गुजरना होगा और नाम स्तंभ पर एक स्ट्रिंग रिप्लेसमेंट ऑपरेशन करना होगा। दूसरी क्वेरी में, यह उस तालिका के माध्यम से खोज कर रहा है जहां नाम "जेफ" है और सिर्फ नाम कॉलम को जोए होने के लिए अपडेट कर रहा है।

  2. स्ट्रिंग प्रतिस्थापन वाइल्डकार्ड है। तो पहली क्वेरी में, नाम "जेफरी" "जोरी" बन जाएगा।


3
बिंदु 2 अधिक महत्वपूर्ण है। यदि यह सही काम नहीं करता है तो प्रदर्शन अप्रासंगिक है।
मार्टिन स्मिथ

आप शायद सही हैं, लेकिन हम वास्तव में नहीं जानते हैं कि अद्यतन का व्यावसायिक उद्देश्य क्या माना जाता है। मुझे विश्लेषण के क्रम को उलट देना चाहिए था, लेकिन मुझे लगता है कि दोनों खामियों का उल्लेख करना सही बात थी। एक विचार जो मन में आता है वह यह है कि ओपी ने हमारे लिए इसे सरल बना दिया, लेकिन विवरणों को छोड़ दिया, जैसे कि "नाम" में वास्तव में केवल पहले नाम के बजाय पूरा नाम शामिल है।
जोनाथन फाइट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.