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

PostgreSQL में एक uuid के बड़े सिरे से बड़ा पूर्णांक बनाएं

तेज़ और बिना डायनेमिक SQL

टेक्स्ट प्रतिनिधित्व में UUID के प्रमुख 16 हेक्स अंकों को bitstring bit(64) और उसे bigint . पर कास्ट करें . देखें:

सुविधाजनक रूप से, दाईं ओर अतिरिक्त हेक्स अंक काट दिए जाते हैं कास्ट में bit(64) स्वचालित रूप से - ठीक वही जो हमें चाहिए।

Postgres इनपुट के लिए विभिन्न स्वरूपों को स्वीकार करता है। आपका दिया गया स्ट्रिंग अक्षर उनमें से एक है:

14607158d3b14ac0b0d82a9a5a9e8f6e

UUID (और text . का डिफ़ॉल्ट टेक्स्ट प्रतिनिधित्व डेटा प्रकार uuid . के लिए Postgres में आउटपुट ) पूर्वनिर्धारित स्थानों पर हाइफ़न जोड़ता है:

14607158-d3b1-4ac0-b0d8-2a9a5a9e8f6e

मैनुअल:

यदि इनपुट प्रारूप भिन्न हो सकता है, तो सुनिश्चित करने के लिए पहले हाइफ़न पट्टी करें:

SELECT ('x' || translate(uuid_as_string, '-', ''))::bit(64)::bigint;

वास्तविक कास्ट करें uuid uuid::text . के साथ इनपुट करें ।

db<>fiddle यहां

ध्यान दें कि Postgres हस्ताक्षरित . का उपयोग करता है पूर्णांक, इसलिए bigint ऊपरी हिस्से में ऋणात्मक संख्याओं के लिए अतिप्रवाह - जो इस उद्देश्य के लिए अप्रासंगिक होना चाहिए।

DB डिज़ाइन

यदि संभव हो तो एक bigserial अंतर्निहित तालिका में कॉलम और इसके बजाय इसका उपयोग करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django मॉडल के लिए एक पांडा डेटाफ़्रेम कैसे लिखें

  2. postgresql में स्पष्ट लेनदेन अलगाव उल्लंघन

  3. chown:/var/lib/postgresql/data/postgresql.conf:रीड ओनली फाइल सिस्टम

  4. मैं Windows प्रमाणीकरण का उपयोग करने के लिए PostgreSQL को कैसे कॉन्फ़िगर कर सकता हूं?

  5. PHP में डेटाटाइम से संबंधित संचालन करना