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 valueはストレージサイズです。 byteaの場合は半分未満です ヘキサ表現と比較して。



    1. 2つの異なるEC2インスタンスでのDjangoとPostgreSQLのセットアップ

    2. SQLServerのXMLドキュメントでノードの順序を検索する

    3. GROUP BY/SQLでの集計関数の混乱

    4. MySQLShowユーザー