Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में SQL टेक्स्ट को रिप्लेस फंक्शन के साथ खोजने और बदलने के लिए शीर्ष 5 तथ्य

आज के कोड एडिटर और वर्ड प्रोसेसर सर्च और रिप्लेस फीचर के साथ आते हैं। यह तब मददगार होता है जब आपको किसी शब्द या शब्दों के समूह को बदलने की आवश्यकता होती है। हम किसी छोटी सी समस्या या बदलाव के लिए अपने लिखित कार्य को फेंकना नहीं चाहते हैं।

यही बात हमारे डेटा पर भी लागू होती है। उपयोगकर्ता हमें शाप देंगे यदि हम उन्हें संपादित करने के लिए कहेंगे कि क्या नाम बदलने की आवश्यकता है। इसलिए हमारे डेटाबेस में लिखे टेक्स्ट को बदलने के लिए सर्च एंड रिप्लेस फीचर भी उपलब्ध है। यहाँ SQL में REPLACE कमांड आता है।

SQL में REPLACE सिंटैक्स इस प्रकार है:

बदलें (<मूल स्ट्रिंग> , <स्ट्रिंग टू सर्च> , <प्रतिस्थापन स्ट्रिंग> )

ध्यान दें कि सभी पैरामीटर आवश्यक हैं। <मूल स्ट्रिंग> एक स्ट्रिंग अक्षर या अभिव्यक्ति का एक स्ट्रिंग परिणाम हो सकता है। डेटाबेस टेबल में, हम आमतौर पर एक स्ट्रिंग कॉलम पास करते हैं जहाँ हम चाहते हैं कि मान बदल जाए। इस बीच, <मूल स्ट्रिंग> . के भीतर एक स्ट्रिंग है आप खोजना चाहते हैं। अंत में, आप एक <प्रतिस्थापन स्ट्रिंग . पास करते हैं जो . को बदल देगा . सरल, काफी है, है ना?

लेकिन कुछ चेतावनियां हो सकती हैं। इस तरह, आप पता लगा सकते हैं कि गलत शब्दों को बदलने से कैसे बचें या SQL सर्वर में डुप्लिकेट रिकॉर्ड डालने से कैसे बचें। या, शायद, सही शब्दों की जगह नहीं ले रहा है। फिर अंत में अपना डेटा खराब करना।

क्या आप SQL REPLACE में नए हैं? यहां आपके लिए एक मुफ़्त चीट शीट है। बस नीचे अपना ईमेल पता दर्ज करें, और हम इसे सीधे आपके इनबॉक्स में भेज देंगे।

अच्छा लग रहा है? आइए खुदाई करें।

[sendpulse-form id="12251″]

1. SQL REPLACE सभी अवसरों के लिए टेक्स्ट को बदल देता है

ये सही है। यह आपके पूरे टेक्स्ट को उस स्ट्रिंग के साथ स्वीप करता है जिसे आप खोजना चाहते हैं। मैं इसे आपको दिखाता हूं और समस्या की व्याख्या करता हूं। नीचे दिए गए उदाहरण पर एक नज़र डालें:

SELECT REPLACE('know the unknown','know','seek'); 
-- OUTPUT: 'seek the unseekn. Surprise!

जानते हैं स्ट्रिंग दो बार मौजूद है, शब्दों में जानें और अनजानें एन। यदि आप सावधान नहीं हैं, तो वर्तनी की गलतियाँ आपके डेटा में आ जाएँगी। इसके बजाय, आप केवल पूर्ण शब्दों को खोजने के लिए स्थान जोड़ सकते हैं। ये रहा संशोधित कोड:

SELECT REPLACE('know the unknown','know ','seek ');   
-- OUTPUT: 'seek the unknown'.

ज्यादा बेहतर? अन्य परिदृश्य भी हो सकते हैं, लेकिन आप समझ गए हैं।

2. SQL REPLACE टेक्स्ट को हटा सकता है

क्या आपने टेक्स्ट एडिटर में किसी शब्द को कुछ भी नहीं बदलने की कोशिश की है? या शायद आप SQL में डुप्लीकेट हटाना चाहते हैं? यह SQL REPLACE में भी होता है। यहां एक उदाहरण दिया गया है:

USE AdventureWorks
GO

SELECT
 EmailAddress
,REPLACE(EmailAddress,'-','') AS NewEmailAddress
FROM person.EmailAddress;

पहले कॉलम में मूल ईमेल पता डोमेन नाम होता है। दूसरा मूल डोमेन नाम से हाइफ़न हटा देता है। नीचे स्क्रीनशॉट देखें:

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

3. संयोजन SQL REPLACE के परिणामों को प्रभावित करता है

जब आप एक SQL सर्वर स्थापित करते हैं, तो एक डिफ़ॉल्ट संयोजन का उपयोग किया जाता है। बदले में, इसका उपयोग आपके डेटाबेस और टेबल कॉलम द्वारा किया जाएगा। चित्र 2 वह दिखाता है जिसका मैं उपयोग करता हूं:

अपने लैपटॉप पर, मैं SQL_Latin1_CP1_CI_AS का उपयोग करता हूं . यह एक केस-असंवेदनशील संयोजन है। (यह भी देखें सीआई c . के संयोजन नाम में ऐस i असंवेदनशील)। इसलिए, शब्द कुत्ता , कुत्ता , डॉग , और dOg उसी के साथ व्यवहार किया जाएगा।

आइए इसे क्रिया में आजमाएं:

DECLARE @string VARCHAR(200) = 'Cats are great pets 
and so easy to take care of. They make good companions. 
Having a cat around is good for children.';

SELECT REPLACE(@string,'cat','dog');

और परिणाम यह है:

REPLACE सुविधा को बिल्ली . शब्द मिला बिल्ली . में s पहले वाक्य में और शब्द बिल्ली . में अंतिम वाक्य में। यदि अक्षर अपरकेस या लोअरकेस हैं तो यह अप्रासंगिक है।

हालांकि, यदि हम मिलान में परिवर्तन को REPLACE के भीतर केस-संवेदी में बदलने के लिए बाध्य करते हैं, तो क्या होगा? यहाँ REPLACE के भीतर COLLATE का उपयोग करने वाला कोड दिया गया है:

DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';

-- force a change to a case-sensitive collation. '_CS_' for case-sensitive
SELECT REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog'); 

और ये रहा आउटपुट:

अब आप देखते हैं कि मिलान परिणाम को कैसे प्रभावित करता है। बिल्ली और बिल्ली अब अलग तरह से व्यवहार किया जाता है। पैराग्राफ भ्रमित हो जाता है। तो, सबक सावधानी के साथ संयोजन का उपयोग करना है।

4. आप SQL REPLACE को नेस्ट कर सकते हैं

आप REPLACE फ़ंक्शन को नेस्ट करके उन शब्दों को बदल सकते हैं जिन्हें आपने पहले ही बदल दिया है। यहां एक उदाहरण दिया गया है:

USE AdventureWorks
GO

SELECT 
 definition
,REPLACE(REPLACE(definition,'CREATE PROCEDURE','ALTER PROCEDURE'),'BusinessEntityID','BusinessEntityNo')
FROM sys.sql_modules a
INNER JOIN sys.objects b ON a.object_id = b.object_id
WHERE a.definition LIKE '%BusinessEntityID%'
AND b.type = 'P';

ऊपर दिए गए उदाहरण में REPLACE के भीतर REPLACE का उपयोग किया गया है। यानी CREATE PROCEDURE . को बदलना है करने के लिए प्रक्रिया बदलें फिर BusinessEntityID करने के लिए BusinessEntityNo

क्वेरी उन संग्रहीत कार्यविधियों को प्रभावित करेगी जो BusinessEntityID . का उपयोग करती हैं कॉलम। यह तब उपयोगी होता है जब आप किसी तालिका में किसी स्तंभ का नाम बदलना चाहते हैं और प्रभावित डेटाबेस कोड को बदलना चाहते हैं। संग्रहीत कार्यविधि पैरामीटर भी प्रभावित होते हैं, लेकिन आप नामकरण स्थिरता बनाए रखने के लिए उन्हें बदलना चुन सकते हैं।

ध्यान दें कि ALTER कथनों को निष्पादित करने से पहले आपको उन परिवर्तनों की जाँच करनी होगी जो लागू होंगे। आप चीजों को गड़बड़ाना नहीं चाहते, है ना?

इस बीच, REPLACE को नेस्ट करने से पहले बिल्लियों . की समस्या भी ठीक हो सकती है और कुत्ते . ये रहा समाधान:

DECLARE @string VARCHAR(200) = 'Cats are great pets and so easy to take care of.
They make good companions. Having a cat around is good for children.';

SELECT REPLACE(REPLACE(@string COLLATE SQL_Latin1_General_CP1_CS_AS,'cat','dog') COLLATE SQL_Latin1_General_CP1_CS_AS,'Cat','Dog');

नया परिणाम देखें:

यह भी ध्यान दें कि चित्र 3 में कैपिटलाइज़ेशन की समस्या भी ठीक हो गई है।

5. बदले गए टेक्स्ट को स्टोर करने के लिए UPDATE के साथ प्रयोग करें

अब तक, हमने केवल SELECT क्वेरी के साथ SQL REPLACE का उपयोग किया है। यह हमें केवल REPLACE का आउटपुट देखने की अनुमति देगा। इसके आउटपुट को स्टोर करने के लिए, आपको एक UPDATE भी जारी करना होगा। यहां एक उदाहरण दिया गया है:

USE AdventureWorks
GO

UPDATE Person.EmailAddress
 SET EmailAddress= REPLACE(EmailAddress,'-','');

MySQL का उपयोग करते हुए blog_posts . को शामिल करने का एक और उदाहरण यहां दिया गया है वर्डप्रेस में टेबल। देखें कि आप किसी निजी URL को सार्वजनिक URL से कैसे बदल सकते हैं:

-- View the possible results
SELECT 
 guid 
,REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net') AS NewGUID
FROM blog_posts
WHERE post_date > '2020-10-01';

-- Update the blog_posts table by replacing localhost with a fictitious URL
UPDATE blog_posts
set guid = REPLACE(guid,'http://localhost/techblog','https://sqltechblog.net')
WHERE post_date > '2020-10-01';

ऊपर दिए गए पहले स्टेटमेंट के लिए सेट किया गया परिणाम MySQL के लिए dbForge Studio का उपयोग करके नीचे देखा जा सकता है:

निष्कर्ष

अब तक सब ठीक है। आपने देखा कि SQL में REPLACE क्रिया में क्या कर सकता है। जब आपको ईमेल पते और यूआरएल बदलने की आवश्यकता हो तो यह विचार दे सकता है। यदि आप किसी संग्रहीत कार्यविधि, दृश्य, या समानार्थी में उपयोग की गई तालिका में किसी स्तंभ का नाम बदलते हैं।

आइए एक संक्षिप्त विवरण लें:

  • SQL REPLACE सभी घटनाओं के लिए टेक्स्ट को बदल सकता है।
  • यह टेक्स्ट के एक हिस्से को भी हटा सकता है।
  • संयोजन सेटिंग्स REPLACE के आउटपुट को प्रभावित कर सकती हैं।
  • आप SQL REPLACE के उपयोग को नेस्ट कर सकते हैं।
  • आखिरकार, बदले गए टेक्स्ट को स्टोर करने के लिए UPDATE का उपयोग करें।

अगर आपको यह पोस्ट पसंद आए तो कृपया इसे अपने पसंदीदा सोशल मीडिया पर शेयर करें। हमें यह भी बताएं कि आप नीचे टिप्पणी अनुभाग में क्या सोचते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में मौजूदा तालिका में एक CHECK बाधा जोड़ें

  2. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में वस्तुओं को कैसे फ़िल्टर करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 19

  3. पेश है नई सुविधा - गतिरोध विश्लेषण

  4. एकाधिक कॉलम का SQL MAX?

  5. क्या एएनएसआई जॉइन बनाम गैर-एएनएसआई जॉइन क्वेरी अलग-अलग प्रदर्शन करेगी?