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

रेगेक्स एक स्ट्रिंग में एकाधिक वर्णों की सभी घटनाओं को हटा देता है

अधिक तेज़ translate()<का उपयोग करें /कोड> इस साधारण मामले के लिए:

UPDATE tbl SET text = translate(text, '(;<>)', '');

दूसरे पैरामीटर में प्रत्येक वर्ण जिसका तीसरे पैरामीटर में कोई प्रतिपक्ष नहीं है, उसे कुछ भी नहीं के साथ बदल दिया जाता है।

रेगुलर एक्सप्रेशन समाधान इस तरह दिख सकता है:

regexp_replace(text, '[(;<>)]', '', 'g');

आवश्यक तत्व चौथा पैरामीटर है 'g' केवल पहले मैच के बजाय "वैश्विक रूप से" को बदलने के लिए। दूसरा पैरामीटर एक वर्ण वर्ग है।
आप सही रास्ते पर थे, बस regexp_replace()

अपडेट पर संकेत करें

यदि आप सभी की अपेक्षा नहीं करते हैं पंक्तियों को बदलने के लिए, मैं दृढ़ता से सलाह दूंगा कि आप अपने अद्यतन को अनुकूलित करें कथन:

UPDATE tbl
SET    text =  translate(text, '(;<>)', '')
WHERE  text <> translate(text, '(;<>)', '');

इस तरह आप (महंगे) खाली अपडेट से बचते हैं। (शून्य इस विशेष मामले में स्वचालित रूप से कवर किया जाता है।)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट का उपयोग करके छवि को पोस्टग्रेज डेटाबेस में कैसे स्टोर करें?

  2. Orbeon प्रपत्र DB कनेक्शन पोस्टग्रेज करता है

  3. एक क्वेरी टाइम-आउट क्यों होती है जब वह अपनी टाइमआउट सीमा के भीतर होती है?

  4. CSV डेटा के साथ वेरिएबल से कॉपी पोस्ट करता है

  5. एक खाली hstore कॉलम में एक कुंजी जोड़ना