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

postgresql:md5 संदेश डाइजेस्ट के लिए डेटा प्रकार?

bytea . के रूप में md5 हैश हेक्सा प्रतिनिधित्व के लिए 32 के बजाय केवल 16 बाइट्स का उपयोग करेगा:

create table t (d bytea);
insert into t (d) values
    (digest('my_string', 'md5')),
    (decode(md5('my_string'), 'hex'));

ऊपर दिए गए दोनों रूप काम करेंगे लेकिन आसान digest . का उपयोग करने के लिए कार्य के लिए pgcrypto . को स्थापित करना आवश्यक है सुपरयूज़र के रूप में एक्सटेंशन:

create extension pgcrypto;

digest का प्रयोग करें फ़ंक्शन या decode . का संयोजन और md5 एक निश्चित स्ट्रिंग की खोज के लिए ऊपर के रूप में:

select
    octet_length(d) ba_length,
    pg_column_size(d) ba_column,
    encode(d, 'hex') hex_representation,
    octet_length(encode(d, 'hex')) h_length,
    pg_column_size(encode(d, 'hex')) h_column
from t
where d = digest('my_string', 'md5')
;
 ba_length | ba_column |        hex_representation        | h_length | h_column 
-----------+-----------+----------------------------------+----------+----------
        16 |        17 | 3d212b21fad7bed63c1fb560c6a5c5d0 |       32 |       36
        16 |        17 | 3d212b21fad7bed63c1fb560c6a5c5d0 |       32 |       36

pg_column_size मूल्य भंडारण आकार है। bytea . के लिए यह आधे से भी कम है हेक्सा प्रतिनिधित्व की तुलना में।



  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. PostgreSQL अपग्रेड को खोलना

  3. बिना डुप्लीकेट के लेफ्ट जॉइन वाली चार टेबल्स में शामिल हों

  4. थ्रेसहोल्ड तक पहुंचने के बाद चल रहे एसयूएम को रीसेट कैसे करें?

  5. आप कमांड लाइन से CSV या TSV प्रारूप में PostgreSQL क्वेरी के परिणाम को कैसे प्रिंट करते हैं?