2011-01-29 9 views
7

मैं एक ऐसा एप्लीकेशन लिख रहा हूं जिसे mysql और postgresql दोनों पर काम करने की आवश्यकता है। मुझे कुछ मानों की तुलना करने के लिए like का उपयोग करना होगा।एसक्यूएल 'LIKE' वाक्यविन्यास

mysql LIKE में यह असंवेदनशील है। PostgreSQL LIKE में यह केस संवेदी है और ILIKE यह केस संवेदी है।

मैच को असंवेदनशील होने के मामले में ठोस क्वेरी बनाने का सबसे अच्छा तरीका क्या है?

क्या पीडीओ के लिए इसका समाधान है?

उत्तर

9

एक केस-संवेदी तरह सुनिश्चित करने के लिए सबसे आसान तरीका है इनमें से किसी एक की तरह कुछ का उपयोग करने के लिए है:

LOWER(column_name) LIKE LOWER(pattern) 
UPPER(column_name) LIKE UPPER(pattern) 

या आप ऊपर से मामला/नीचे-मामला एसक्यूएल बाहर pattern और बस का उपयोग कर सकते हैं:

LOWER(column_name) LIKE down_cased_pattern 
UPPER(column_name) LIKE up_cased_pattern 

मैं LOWER आदत से बाहर उपयोग करता हूं क्योंकि कम केस पढ़ने के लिए आसान है और इसलिए डीबग करना आसान है।

+4

"प्रश्न: क्या सभी स्क्रिप्ट में ऊपरी और निचले मामले हैं? ए: नहीं, वास्तव में, अधिकांश स्क्रिप्ट में मामले नहीं हैं।" (यूनिकोड एफएक्यू से) सामान्य मामले में, आप अपरकेस संस्करण के लिए लोअरकेस वर्ण पर भरोसा नहीं कर सकते हैं। आप एक अपरकेस कैरेक्टर पर मैप करने के लिए लोअरकेस कैरेक्टर पर भी भरोसा नहीं कर सकते - उनमें से कुछ UPPER() से दो अक्षर तक। तो कम() सुरक्षित है, लेकिन बस थोड़ा सा। क्या आप यूनिकोड दुनिया में रहना पसंद नहीं करते? –

+1

@Catcall: दो बड़े अक्षर के लिए एक एकल के लोअर केस वर्ण मानचित्रण का एक अच्छा उदाहरण विदेशी जर्मन भाषा से आता है: 'ऊपरी (" ß ")' '" एसएस "' है। I18N और L10N इतना मजेदार मजेदार समय है! विशेष रूप से जब आप जेआईएस, एसजेआईएस, ईयूसी, और यूनिकोड जापानी के साथ जापानी भाषा पढ़ने में सक्षम होने के बिना एक ही समय में काम कर रहे हैं (वहां किया गया है, खुशी है कि यूटीएफ -8 इन दिनों काफी मानक है)। –

3

यह Database Abstraction Layer का काम है।

पीडीओ does not जो भी आप खोज रहे हैं वह करें लेकिन यदि आप google for them हैं तो कुछ PHP DALs हैं।

पीडीओ डेटाबेस अमूर्तता प्रदान नहीं करता है; यह एसक्यूएल या लापता सुविधाओं का अनुकरण नहीं करता है। आप एक पूर्ण विकसित अमूर्त परत का उपयोग करना चाहिए अगर आपको लगता है कि सुविधा की जरूरत है।

संबंधित मुद्दे