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

PostgreSQL 9.1 चुनिंदा बयानों में कोलेट का उपयोग कर

मुझे आपके डिज़ाइन में कोई दोष नहीं मिल रहा है। मैंने कोशिश की है।

स्थान और मिलान

मैंने इस प्रश्न पर दोबारा गौर किया। इस पर विचार करें sqlfiddle पर परीक्षण केस . ऐसा लगता है कि यह ठीक काम करता है। मैंने स्थानीय भाषा भी बनाई ca_ES.utf8 मेरे स्थानीय परीक्षण सर्वर में (डेबियन स्क्वीज़ पर पोस्टग्रेएसक्यूएल 9.1.6) और मेरे डीबी क्लस्टर में लोकेल जोड़ा:

CREATE COLLATION "ca_ES" (LOCALE = 'ca_ES.utf8');

मुझे वही परिणाम मिलते हैं जो उपरोक्त sqlfiddle में देखे जा सकते हैं।

ध्यान दें कि कोलेशन नाम पहचानकर्ता हैं और CamelCase स्पेलिंग जैसे "ca_ES" को संरक्षित करने के लिए डबल-उद्धृत किए जाने की आवश्यकता है . हो सकता है कि आपके सिस्टम में अन्य लोकेशंस के साथ कुछ भ्रम हुआ हो? अपने उपलब्ध कॉलेशन देखें :

SELECT * FROM pg_collation;

आम तौर पर, कोलेशन नियम सिस्टम लोकेशंस . से व्युत्पन्न होते हैं . मैन्युअल में विवरण के बारे में यहां पढ़ें . यदि आपको अभी भी गलत परिणाम मिलते हैं, तो मैं आपके सिस्टम को अपडेट करने और "ca_ES" के लिए लोकेल को पुन:उत्पन्न करने का प्रयास करूंगा। . डेबियन (और संबंधित लिनक्स वितरण) में इसके साथ किया जा सकता है:

dpkg-reconfigure locales

एनएफसी

मेरे पास एक और विचार है:असामान्यीकृत UNICODE तार

क्या ऐसा हो सकता है कि आपका 'Àudio' वास्तव में '̀ ' || 'Audio' ? ऐसा होगा यह चरित्र:

SELECT U&'\0300A';
SELECT ascii(U&'\0300A');
SELECT chr(768);

विकिपीडिया में एक्यूट एक्सेंट के बारे में और पढ़ें .
आपको SET standard_conforming_strings = TRUE . करना होगा पहली पंक्ति की तरह यूनिकोड स्ट्रिंग्स का उपयोग करने के लिए।

ध्यान दें कि कुछ ब्राउज़र असामान्य यूनिकोड वर्णों को सही ढंग से प्रदर्शित नहीं कर सकते हैं और कई फ़ॉन्ट्स में विशेष वर्णों के लिए कोई उचित ग्लिफ़ नहीं है, इसलिए आपको यहां कुछ भी दिखाई नहीं दे रहा है या अस्पष्ट है। लेकिन UNICODE उस बकवास के लिए अनुमति देता है। आपको क्या मिला यह देखने के लिए परीक्षण करें:

SELECT octet_length('̀A')  -- returns 3 (!)
SELECT octet_length('À')  -- returns 2

यदि आपके डेटाबेस ने अनुबंधित किया है, तो आपको इससे छुटकारा पाने या परिणाम भुगतने की आवश्यकता है। इसका इलाज आपके स्ट्रिंग्स को NFC पर सामान्य करना है। . पर्ल में बेहतर UNICODE-foo कौशल हैं, आप PostgreSQL में इसे करने के लिए plperlu फ़ंक्शन में उनके पुस्तकालयों का उपयोग कर सकते हैं। मुझे पागलपन से बचाने के लिए मैंने ऐसा किया है।

डेविड व्हीलर द्वारा PostgreSQL में UNICODE सामान्यीकरण .
unicode.org पर यूनिकोड नॉर्मलाइज़ेशन फ़ॉर्म के बारे में पूरी जानकारी पढ़ें ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClusterControl 1.8.2 . के साथ PostgreSQL के लिए PgBouncer कनेक्शन पूलर का उपयोग करना

  2. दो टाइमस्टैम्प के बीच रिकॉर्ड का चयन

  3. मैं मूल्यों पर मिलान करके किसी अन्य तालिका से तालिका में कैसे सम्मिलित करूं?

  4. अनुक्रमण और:GIN अनुक्रमणिका

  5. आप स्थानीय समयक्षेत्र के बजाय यूटीसी में JSON मार्शल को pq.NullTime कैसे करते हैं?