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

प्रति-स्तंभ के आधार पर विराम चिह्नों को अनदेखा करने के लिए क्रम निर्धारित करें

सॉर्टिंग के लिए "सामान्यीकृत करें"

आप कर सकते थे regexp_replace() का उपयोग करें पैटर्न के साथ '[^a-zA-Z]' ORDER BY . में खंड लेकिन वह केवल शुद्ध ASCII अक्षरों को पहचानता है। क्लास शॉर्टहैंड का बेहतर उपयोग करें '\W' जो आपके स्थान में अतिरिक्त गैर-ASCII अक्षरों को पहचानता है जैसे äüóèß आदि.या आप कर सकते थे unaccent() की सहायता से डाइक्रिटिक तत्वों वाले सभी वर्णों को उनके मूल रूप में सुधारें और सामान्य करें समारोह। इस छोटे से डेमो पर विचार करें:

SELECT *
      , regexp_replace(x, '[^a-zA-Z]', '', 'g')
      , regexp_replace(x, '\W', '', 'g')
      , regexp_replace(unaccent(x), '\W', '', 'g')
FROM  (
SELECT 'XY ÖÜÄöüäĆČćč€ĞğīїıŁłŃńŇňŐőōŘřŠšŞşůŽžż‘´’„“”­–—[](),;.:̈� XY'::text AS x) t

->SQLfiddle for Postgres 9.2.
->SQLfiddle for Postgres 9.1.

रेगुलर एक्सप्रेशन कोड 9.2 संस्करण में अद्यतन किया गया है। मैं मान रहा हूं यही कारण है कि 9.2 में बेहतर हैंडलिंग का कारण है जहां उदाहरण के सभी अक्षर वर्णों का मिलान किया जाता है, जबकि 9.1 केवल कुछ से मेल खाता है।

unaccent() अतिरिक्त मॉड्यूल अस्वीकार्य द्वारा प्रदान किया जाता है . भागो:

CREATE EXTENSION unaccent;

एक बार प्रति डेटाबेस में उपयोग करने के लिए (पोस्टग्रेज 9.1+, पुराने संस्करण भिन्न तकनीक )।

स्थानीय/संयोजन

आपको पता होना चाहिए कि Postgres लोकेशंस (कोलेशन सहित) के लिए अंतर्निहित ऑपरेटिंग सिस्टम पर निर्भर करता है। सॉर्ट क्रम आपके चुने हुए स्थान, या अधिक विशिष्ट LC_COLLATE . इस संबंधित उत्तर में और अधिक:
स्ट्रिंग सॉर्ट क्रम (LC_COLLATE और LC_CTYPE)

कोलाजेशन सपोर्ट को सीधे Postgres में शामिल करने की योजना है , लेकिन वह इस समय उपलब्ध नहीं है।

कई स्थान बॉक्स से बाहर वर्ण डेटा को सॉर्ट करने के लिए आपके द्वारा वर्णित विशेष वर्णों की उपेक्षा करते हैं। यदि आपके सिस्टम में एक लोकेल स्थापित है जो आपके द्वारा खोजे जा रहे सॉर्ट ऑर्डर प्रदान करता है, तो आप इसे पोस्टग्रेज 9.1 या बाद के संस्करण में एड-हॉक का उपयोग कर सकते हैं:

SELECT foo FROM bar ORDER BY foo COLLATE "xy_XY"

यह देखने के लिए कि आपके वर्तमान पोस्टग्रेज इंस्टालेशन में कौन से कोलेशन स्थापित हैं और उपलब्ध हैं:

SELECT * FROM pg_collation;

दुर्भाग्य से जब तक आप स्रोत कोड को हैक नहीं करते तब तक अपने स्वयं के कस्टम संयोजन (अभी तक) को परिभाषित करना संभव नहीं है।

मिलान नियम आमतौर पर किसी देश में बोली जाने वाली भाषा के नियमों द्वारा शासित होते हैं। टेलीफोन बुक्स का क्रम क्रम में होगा, अगर अभी भी टेलीफोन बुक्स होतीं ... आपका ऑपरेटिंग सिस्टम उन्हें प्रदान करता है।

उदाहरण के लिए, डेबियन लिनक्स में आप इसका उपयोग कर सकते हैं:

locale -a

सभी उत्पन्न स्थानों को प्रदर्शित करने के लिए। और:

dpkg-reconfigure locales

अधिक उत्पन्न / स्थापित करने के लिए रूट उपयोगकर्ता (कई का एक तरीका) के रूप में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या हम हमेशा डेट कॉलम को स्ट्रिंग (वर्कर) के रूप में नक्स और पोस्टग्रेज के साथ ला सकते हैं?

  2. स्प्रिंग बूट में JDBC और स्प्रिंग डेटा jpa का उपयोग करके मेरे सत्र वसंत के लिए अलग डेटा स्रोत बनाना

  3. SSH टनल के माध्यम से PostgreSQL

  4. ubuntu 10.04 सर्वर पर रेल 3 के लिए नए डेटाबेस में पोस्टग्रेज उपयोगकर्ता का उपयोग नहीं कर सकता

  5. PostgreSQL डेटाबेस से छवि प्रदर्शित करना, bytea