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

कॉलम द्वारा ऑर्डर करें जो कभी-कभी सक्रिय रिकॉर्ड और रेल का उपयोग करके खाली हो जाते हैं

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

#= select * from (values ('b'), ('B'), ('a'), ('A')) t (letter);
 letter
--------
 b
 B
 a
 A
#= select * from (values ('b'), ('B'), ('a'), ('A')) t (letter) order by letter;
 letter
--------
 A
 B
 a
 b

तो आपकी क्वेरी वास्तव में पूरी तरह से काम कर रही है, बस [email protected] है। ए> Josh . के बाद छाँटें . इससे बचने के लिए, आप लोअरकेस मान के आधार पर छाँट सकते हैं। यहां आपके पास मौजूद डेटा का एक सरल संस्करण है:

#= select * from volunteers;
 first_name | last_name |       email
------------+-----------+--------------------
 Josh       | Broger    | [email protected]
 Josh       | Kenton    | [email protected]
 ∅          | ∅         | [email protected]
 Josh       | Broger    | [email protected]
 Alex       | Diego     | [email protected]

फिर coalesce . का उपयोग करके सॉर्ट करने के लिए आप इसके बाद हैं:

#= select * from volunteers order by lower(coalesce(first_name, email));
 first_name | last_name |       email
------------+-----------+--------------------
 Alex       | Diego     | [email protected]
 ∅          | ∅         | [email protected]
 Josh       | Broger    | [email protected]
 Josh       | Broger    | [email protected]
 Josh       | Kenton    | [email protected]

या ActiveRecord . का उपयोग करके अपने पूर्ण संस्करण के लिए :

Volunteer
  .joins(:volunteer_lists)
  .where(
    "(volunteer_lists.organizer_id = ? AND organizer_type = 'Organization') OR (volunteer_lists.organizer_id IN (?) AND organizer_type = 'Collaborative')",
    organization.id, collaboratives
  )
  .order('LOWER(COALESCE("volunteers"."first_name", "volunteers"."last_name", "volunteers"."email"))')


  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. क्या पोस्टग्रेएसक्यूएल में यूनियन के बाद ऑर्डर संरक्षित है?

  3. पोस्टग्रेज:इसके वर्तमान अधिकतम मान के साथ सभी पूर्णांक कॉलम खोजें

  4. json, jsonb, hstore, xml, enum, ipaddr, आदि को स्टोर करना कॉलम x के साथ विफल रहता है जो टाइप json का है लेकिन एक्सप्रेशन टाइप कैरेक्टर का है

  5. PostgreSQL में हर शब्द के पहले अक्षर को कैपिटलाइज़ कैसे करें