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

PostgreSQL में गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

नीचे उन पंक्तियों को वापस करने के दो विकल्प दिए गए हैं जिनमें PostgreSQL में केवल गैर-अल्फ़ान्यूमेरिक वर्ण हैं।

गैर-अल्फ़ान्यूमेरिक वर्णों में विराम चिह्न वर्ण शामिल हैं जैसे example@sqldat.com#&()–[{}]:;',?/* और प्रतीक जैसे `~$^+=<>“ , साथ ही रिक्त स्थान वर्ण जैसे स्पेस या टैब वर्ण।

नमूना डेटा

हम अपने उदाहरणों के लिए निम्नलिखित डेटा का उपयोग करेंगे:

SELECT c1 FROM t1;

परिणाम:

+----------------------+
| c1                   |
+----------------------+
| Music                |
| Live Music           |
| Café                 |
| Café Del Mar         |
| 100 Cafés            |
| example@sqldat.com    |
| 1 + 1                |
| ()                   |
| example@sqldat.com#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
| $1.50                |
| Player 456           |
| 007                  |
| NULL                 |
|                      |
| é                    |
| É                    |
| é 123                |
| ø                    |
| ø 123                |
+----------------------+

विकल्प 1:[:alnum:] से तुलना करें

हम PostgreSQL के !~ . का उपयोग कर सकते हैं ऑपरेटर हमारे कॉलम की तुलना रेगुलर एक्सप्रेशन से करने के लिए। हम इस ऑपरेटर का उपयोग तब करते हैं जब हम यह निर्दिष्ट करना चाहते हैं कि मान रेगुलर एक्सप्रेशन से मेल नहीं खाता।

MySQL की नियमित अभिव्यक्ति क्षमता में POSIX वर्ण वर्गों के लिए समर्थन शामिल है। इसलिए, हम [:alnum:] . का उपयोग कर सकते हैं हमारे रेगुलर एक्सप्रेशन में POSIX वर्ण वर्ग।

SELECT c1 FROM t1 
WHERE c1 !~ '[[:alnum:]]';

परिणाम:

 ()
 example@sqldat.com#&()–[{}]:;',?/*
 `~$^+=<>“
 

खाली स्ट्रिंग भी संख्या-संख्यात्मक है, और इसलिए उस उदाहरण ने उस पंक्ति को वापस कर दिया जिसमें खाली स्ट्रिंग है।

हम NULLIF() . का उपयोग करके खाली स्ट्रिंग्स को बाहर कर सकते हैं :

SELECT c1 FROM t1 
WHERE NULLIF(c1, '') !~ '[[:alnum:]]';

परिणाम:

 ()
 example@sqldat.com#&()–[{}]:;',?/*
 `~$^+=<>“

विकल्प 2:वर्णों की श्रेणी निर्दिष्ट करें

इसे करने का एक और तरीका है कि आप अपने रेगुलर एक्सप्रेशन में वर्णों की एक श्रेणी निर्दिष्ट करें।

उदाहरण:

SELECT c1 FROM t1
WHERE c1 !~ '[A-Za-z0-9]';

परिणाम:

 ()
 example@sqldat.com#&()–[{}]:;',?/*
 `~$^+=<>“
 
 é
 É
 ø

और खाली स्ट्रिंग को हटाने के लिए:

SELECT c1 FROM t1
WHERE NULLIF(c1, '') !~ '[A-Za-z0-9]';

परिणाम:

 ()
 example@sqldat.com#&()–[{}]:;',?/*
 `~$^+=<>“
 
 é
 É
 ø

इस मामले में, मेरी बहिष्करण श्रेणी में é . जैसे अक्षरांकीय वर्ण शामिल नहीं थे , É , और ø , और इसलिए आउटपुट गैर-अल्फ़ान्यूमेरिक वर्णों का सही प्रतिनिधित्व नहीं है। उस ने कहा, कम से कम यह विधि आपको उन सटीक वर्णों को निर्दिष्ट करने का विकल्प देती है जिन्हें आप शामिल करना चाहते हैं या परिणाम से बाहर करना चाहते हैं।


  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 का उपयोग करके पिछले महीने का अंतिम दिन कैसे निर्धारित करूं?

  2. मास्टर-स्लेव और मास्टर-मास्टर आर्किटेक्चर के साथ पोस्टग्रेएसक्यूएल उच्च उपलब्धता

  3. H2 postgresql मोड मेरे लिए काम नहीं कर रहा है

  4. Linux पर PostgreSQL डेटाबेस डिफ़ॉल्ट स्थान

  5. Postgres सरणियों का उपयोग करने के लिए रेल प्रवासन बदलते स्तंभ