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

SQLite3 LIKE या PostgreSQL ILIKE के लिए सामान्य रूबी समाधान?

समस्या की जड़ यहाँ स्थित है:

<ब्लॉकक्वॉट>

मैं विकास के लिए SQLite3 और परिनियोजन के लिए PostgreSQL का उपयोग कर रहा हूं।

यह एक बुरा विचार है™। आप असंगतताओं में भागते रहेंगे - या इससे भी बदतर:नुकसान होने तक कुछ का एहसास नहीं होता है।
विकास और उत्पादन के लिए उसी RDBMS (PostgreSQL) का उपयोग करें और अपने आप को व्यर्थ की परेशानी से बचाएं।

जब आप अपने दुर्भाग्यपूर्ण सेटअप के साथ फंस गए हैं, तो एक साधारण समाधान . है :

lower(style) LIKE lower(?)

दोनों प्लेटफॉर्म पर समान रूप से काम करता है।

  • आप दाहिनी ओर lower() drop छोड़ सकते हैं , यदि आप लोअर-केस खोज-पैटर्न प्रदान करते हैं।

  • मानक SQLite में lower(X) केवल ASCII अक्षरों को फोल्ड करता है। अधिक के लिए, मैं SQLite मैनुअल में अध्याय कोर फ़ंक्शंस उद्धृत करता हूं:

    <ब्लॉकक्वॉट>

    निचला (एक्स) फ़ंक्शन स्ट्रिंग एक्स की एक प्रति देता है जिसमें सभी ASCII वर्णों को निचले मामले में परिवर्तित किया जाता है। डिफ़ॉल्ट अंतर्निहित निचला () फ़ंक्शन केवल ASCII वर्णों के लिए काम करता है। गैर-ASCII वर्णों पर केस रूपांतरण करने के लिए, ICU एक्सटेंशन लोड करें

    मेरा जोर।

  • PostgreSQL lower(X) UTF-8 आउट ऑफ़ द बॉक्स के साथ काम करता है।

एक स्वागत योग्य दुष्प्रभाव के रूप में, आप गति . कर सकते हैं पोस्टग्रेएसक्यूएल में उस क्वेरी को अभिव्यक्ति पर एक इंडेक्स के साथ lower(style) , जो ILIKE . का उपयोग करने से तेज़ होगा और style . पर एक बुनियादी अनुक्रमणिका .

साथ ही, PostgreSQL 9.1 के बाद से आप pg_trgm के साथ GIN या GIST अनुक्रमणिका का उपयोग कर सकते हैं कोई भी . को गति देने के लिए एक्सटेंशन LIKE और ILIKE क्वेरी - ट्रिगर केस-असंवेदनशील होते हैं। इस संबंधित उत्तर में विस्तृत निर्देश और लिंक:

  • स्वतः पूर्ण फ़ील्ड के लिए समान UTF-8 स्ट्रिंग्स


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2, Postgresql, Python:थोक-सम्मिलित करने का सबसे तेज़ तरीका

  2. क्लाजों के अनुसार समूह होना - एलीन का जनरल बिट्स

  3. PostgreSQL के भीतर JSON क्षमताओं का अवलोकन

  4. PostgreSQL में NULL की n पंक्तियाँ उत्पन्न करें

  5. एसक्यूएल के माध्यम से अनुक्रमों में वर्णों की गणना करना