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

पोस्टग्रेस्क्ल regexp_replace

आप CASE . का उपयोग कर सकते हैं वर्ष के लिए निकालने और परीक्षण करने के लिए अभिव्यक्ति और केवल तभी बदलें जब वर्ष आपकी इच्छित सीमा में आता है:

with test_data (col1) as (
  values ('sdfg 2000'), ('foo 1983'), ('bar 2010'), ('bla 1940')
)
select col1, 
       case 
         when nullif(regexp_replace(col1, '[^0-9]+',''),'')::int between 1990 and 2050 
              then regexp_replace(col1, '\d{4}', '', 'g')
         else col1 
       end as replaced
from test_data;

इसमें परिणाम:

col1      | replaced
----------+---------
sdfg 2000 | sdfg    
foo 1983  | foo 1983
bar 2010  | bar     
bla 1940  | bla 1940

nullif(..) उन मानों के लिए आवश्यक है जिनमें कोई संख्या नहीं है। यदि आपके पास ऐसे मूल्य नहीं हैं, तो आप इसे छोड़ सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL ट्रिगर फ़ंक्शन में pg_notify का उपयोग करना

  2. Postgres में बीजीय डेटा प्रकार

  3. फ़ंक्शन-रिटर्न रिकॉर्ड को कई कॉलम में विभाजित करें

  4. प्रत्येक समूह में शीर्ष तीन मान चुनें

  5. पीजी-वादा सम्मिलित सहायक का उपयोग करके उपनाम के रूप में तालिका नाम में कैसे सम्मिलित करें?