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

PostgreSQL गलत छँटाई

टेक्स्ट के लिए व्यवहार को क्रमबद्ध करें (char . सहित) और varchar साथ ही text प्रकार) वर्तमान संयोजन . पर निर्भर करता है आपके लोकेल का।

पिछले निकट से संबंधित प्रश्न देखें:

  • पोस्टग्रेएसक्यूएल सॉर्ट करें
  • https://stackoverflow.com/q/21006868/398670

यदि आप अपने स्थानीय भाषा के नियमों का पालन करते हुए उचित रूप से स्थानीयकृत सॉर्ट करने के बजाय ASCII मान द्वारा एक सरल सॉर्ट करना चाहते हैं, तो आप COLLATE का उपयोग कर सकते हैं खंड

select * 
from test
order by title COLLATE "C" ASC

या वैश्विक स्तर पर डेटाबेस संयोजन को बदलें (डंप और रीलोड की आवश्यकता है, या पूर्ण रीइंडेक्स)। मेरे फेडोरा 19 लिनक्स सिस्टम पर, मुझे निम्नलिखित परिणाम मिलते हैं:

regress=> SHOW lc_collate;
 lc_collate  
-------------
 en_US.UTF-8
(1 row)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title ASC;
 title 
-------
 #
 a
 #a
 a#
 a#a
(5 rows)

regress=> WITH v(title) AS (VALUES ('#a'), ('a'), ('#'), ('a#a'), ('a#')) 
          SELECT title FROM v ORDER BY title COLLATE "C" ASC;
 title 
-------
 #
 #a
 a
 a#
 a#a
(5 rows)

PostgreSQL आपके ऑपरेटिंग सिस्टम के संयोजन समर्थन का उपयोग करता है, इसलिए यह संभव है कि परिणाम होस्ट OS से होस्ट OS में थोड़ा भिन्न हो। विशेष रूप से, मैक ओएस एक्स के कम से कम कुछ संस्करणों ने यूनिकोड कोलेशन हैंडलिंग को महत्वपूर्ण रूप से तोड़ दिया है।



  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. मैं PostgreSQL का उपयोग करके पिछले महीने का अंतिम दिन कैसे निर्धारित करूं?

  3. पोस्टग्रेएसक्यूएल 13:LIMIT … TIES के साथ

  4. उसी INSERT के दौरान दूसरे कॉलम में सीरियल कॉलम का संदर्भ मान

  5. समय क्षेत्र समानता के साथ समय को पोस्टग्रेज करता है