2

一見単純な質問であり、MySQLに関して尋ねられた別の質問に対応しています。SHA1ハッシュから得られた16進値をPostgreSQLデータベースにどのように格納するのでしょうか。

注:VARCHAR(40)フィールドを使用できることはわかっていますが、データが16進数であるため、これは効率的ではありません。また、PHPを使用してデータベースを操作しているので、必要に応じてPHP関数を使用できますが、その場合、結果をデータベースに保存するにはどうすればよいですか?

4

1 に答える 1

2

16進数でエンコードされたbyteaとして保存します。人間が読める16進データをbyteaに変換するのは、単純に次の問題です。

  ('\x' || sha1_hex_value)::bytea

ここでの唯一の本当の欠点は、アプリのフレームワークによっては、バイナリ表現が得られる可能性があることです。そうでない場合は、エスケープされたバージョンを取得し、エスケープ設定によっては、自分でバイナリに変換することをお勧めします(16進数の場合\xは、値の先頭を削除して16進数として使用できます)。

于 2013-03-25T03:47:31.230 に答える