पोस्टग्रेएसक्यूएल में अपरकेस अक्षरों वाली पंक्तियों को वापस करने के लिए यहां चार विकल्प दिए गए हैं।
नमूना डेटा
मान लीजिए हमारे पास निम्न डेटा वाली एक तालिका है:
SELECT c1 FROM t1;
परिणाम:
c1 ---------------- CAFÉ Café café 1café eCafé James Bond 007 JB 007 007 null É É 123 é é 123 ø Ø
अपरकेस अक्षरों वाली पंक्तियों को वापस करने के लिए हम निम्नलिखित विधियों का उपयोग कर सकते हैं।
विकल्प 1:POSIX कैरेक्टर क्लास से तुलना करें
हम ~
. का उपयोग कर सकते हैं रेगुलर एक्सप्रेशन पैटर्न का केस सेंसिटिव मैच करने के लिए ऑपरेटर। पैटर्न जितना हम चाहें उतना सरल या जटिल हो सकता है।
हमारे कॉलम की तुलना [:upper:]
. से करना एक आसान विकल्प है पॉज़िक्स कैरेक्टर क्लास:
SELECT c1 FROM t1
WHERE c1 ~ '[[:upper:]]';
परिणाम:
c1 ---------------- CAFÉ Café eCafé James Bond 007 JB 007 É É 123 Ø
विकल्प 2:LOWER()
से तुलना करें स्ट्रिंग
एक अन्य विकल्प LOWER()
. का उपयोग करना है मूल मान की तुलना इसके लोअरकेस समकक्ष से करने के लिए कार्य करता है:
SELECT c1 FROM t1
WHERE LOWER(c1) <> c1;
परिणाम:
c1 ---------------- CAFÉ Café eCafé James Bond 007 JB 007 É É 123 Ø
के बराबर नहीं का उपयोग करके (<>
) ऑपरेटर (आप वैकल्पिक रूप से !=
. का उपयोग कर सकते हैं इसके बजाय <>
यदि आप चाहें), तो हम केवल उन्हीं पंक्तियों को लौटाते हैं जो उनके लोअरकेस समकक्षों से भिन्न होती हैं। हम ऐसा इसलिए करते हैं क्योंकि, यदि कोई मान इसके लोअरकेस समकक्ष के समान है, तो यह पहले से ही लोअरकेस था (और हम इसे वापस नहीं करना चाहते हैं)।
डिफ़ॉल्ट रूप से, PostgreSQL एक केस-संवेदी मिलान करता है, और इसलिए हमें वांछित परिणाम प्राप्त करने के लिए केस-संवेदी संयोजन निर्दिष्ट करने की आवश्यकता नहीं है।
विकल्प 3:वास्तविक वर्णों से तुलना करें
एक अन्य विकल्प ~
. का उपयोग करना है एक नियमित अभिव्यक्ति पैटर्न वाला ऑपरेटर जिसमें स्पष्ट रूप से प्रत्येक अपरकेस वर्ण शामिल होता है जिसे हम मिलान करना चाहते हैं:
SELECT c1 FROM t1
WHERE c1 ~ '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';
परिणाम:
c1 ---------------- CAFÉ Café eCafé James Bond 007 JB 007
इस मामले में, पिछले उदाहरणों की तुलना में कम पंक्तियाँ दी जाती हैं। ऐसा इसलिए है क्योंकि मैंने É
. जैसे वर्ण निर्दिष्ट नहीं किए हैं और Ø
, जो उन उदाहरणों में लौटाए गए थे। हमारे परिणाम में É
. शामिल है लेकिन वह पंक्ति केवल इसलिए लौटाई गई क्योंकि इसमें अन्य अपरकेस वर्ण भी शामिल हैं जो करते हैं मैच।
इसलिए, यह विकल्प पिछले वाले की तुलना में अधिक सीमित है, लेकिन यह आपको उन पात्रों पर अधिक नियंत्रण प्रदान करता है, जिनका आप मिलान करना चाहते हैं।
विकल्प 4:वर्णों की श्रेणी से तुलना करें
हम वैकल्पिक रूप से उन वर्णों की श्रेणी निर्दिष्ट कर सकते हैं जिनका हम मिलान करना चाहते हैं:
SELECT c1 FROM t1
WHERE c1 ~ '[A-Z]';
परिणाम:
c1 ---------------- CAFÉ Café eCafé James Bond 007 JB 007