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

LIKE और ~ के बजाय, विकल्पों के साथ रेगेक्स मैच करते समय केवल SIMILAR TO ही क्यों काम करता है

LIKE _ . का उपयोग करके पैटर्न मिलान का समर्थन करता है किसी एकल वर्ण और % . के लिए वर्णों के किसी भी क्रम के लिए यह:

SELECT 'thomas' LIKE '%(h|x)%'

काम नहीं करता क्योंकि LIKE को समझ नहीं आता (...) समूहीकरण या | . के लिए प्रत्यावर्तन के लिए, वे LIKE पैटर्न में केवल शाब्दिक वर्ण हैं।

SIMILAR TO सपोर्ट करता है _ और % LIKE के समान लेकिन (...) . के साथ समूहीकरण जोड़ता है , के साथ विकल्प | , और कुछ अन्य चीज़ें इसलिए यह:

SELECT 'thomas' SIMILAR TO '%(h|x)%'

उम्मीद के मुताबिक काम करता है।

~* POSIX रेगेक्स का उपयोग करता है इसलिए (...) समूहीकरण के लिए है और | विकल्प के लिए है लेकिन % सिर्फ एक प्रतिशत संकेत है; इसका मतलब है कि यह:

SELECT 'thomas' ~* '%(h|x)%'

एक h की तलाश में है या x प्रतिशत चिह्नों से घिरा हुआ है और आपकी अपेक्षा के अनुरूप काम नहीं करता है।

आपका ~* यदि आप उचित रेगेक्स का उपयोग करते हैं तो संस्करण काम करेगा:

SELECT 'thomas' ~* '(h|x)' -- alternation
SELECT 'thomas' ~* 'h|x'   -- alternation without an unnecessary grouping
SELECT 'thomas' ~* '[hx]'  -- or a character class

उपरोक्त से जुड़े दस्तावेज़ों में यह सब शामिल है।



  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. PostgreSQLs कमांड लाइन उपयोगिता (psql) से कैसे बाहर निकलें

  3. डेटा-संशोधित CTE में INSERT कथनों को CASE व्यंजक के साथ संयोजित करना

  4. जावा - तारीख पहले दिन के रूप में सहेजी गई

  5. मैं एक कॉलम कैसे जोड़ सकता हूं जो पोस्टग्रेस्क्ल डेटाबेस में नल की अनुमति नहीं देता है?