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

PostgreSQL LIKE क्लॉज में रेगुलर एक्सप्रेशन

जैसे @a_horse ने टिप्पणी की, आपको रेगुलर एक्सप्रेशन ऑपरेटर का उपयोग करना होगा ~ ब्रैकेट एक्सप्रेशन का उपयोग करने के लिए।
लेकिन और भी बहुत कुछ है। मेरा सुझाव है:

SELECT *
FROM   tbl
WHERE  value ~ '^00[^0]'

^ ... स्ट्रिंग की शुरुआत में मिलान करें (आपकी मूल अभिव्यक्ति किसी भी . पर मेल खा सकती है स्थिति)।
[^0] ... एक कोष्ठक व्यंजक (चरित्र वर्ग) किसी भी . से मेल खाता है वर्ण जो 0 नहीं है ।

या बेहतर , फिर भी:

SELECT *
FROM   tbl
WHERE  value LIKE '00%'       -- starting with '00'
AND    value NOT LIKE '000%'  -- third character is not '0'

क्यों? LIKE उतना शक्तिशाली नहीं है, लेकिन आम तौर पर नियमित अभिव्यक्तियों की तुलना में तेज़ है। सस्ते LIKE . के साथ उम्मीदवारों के समूह को कम करना संभवत:काफी तेज़ है अभिव्यक्ति।

आम तौर पर, आप NOT LIKE '__0' . का प्रयोग करेंगे , लेकिन चूंकि हम पहले से ही LIKE '00%' . स्थापित कर चुके हैं दूसरे विधेय में, हम संकरा (सस्ता) पैटर्न का उपयोग कर सकते हैं NOT LIKE '000'

Postgres एक साधारण btree अनुक्रमणिका . का उपयोग कर सकते हैं लेफ्ट-एंकर एक्सप्रेशन के लिए value LIKE '00%' (बड़ी तालिकाओं के लिए महत्वपूर्ण), जबकि यह अधिक जटिल नियमित अभिव्यक्ति के लिए काम नहीं कर सकता है। Postgres का नवीनतम संस्करण सरल नियमित अभिव्यक्तियों के लिए अनुक्रमणिका का उपयोग कर सकता है, इसलिए यह हो सकता है इस उदाहरण के लिए काम करें। विवरण:

  • पोस्टग्रेज में LIKE और ~ के बीच अंतर


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि:लाइब्रेरी लोड नहीं कर सका "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so":libperl.so:

  2. PostgreSQL ट्यूनिंग:प्रदर्शन बढ़ाने के लिए मुख्य बातें

  3. PostgreSQL 11 - प्रक्रियाएं

  4. रेल प्रवासन:PostgreSQL पर Bigint विफल हो रहा है?

  5. एक इनपुट सरणी के आधार पर यूपीएसईआरटी के फ़ंक्शन में सुधार करना