Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

sqlite3でBlob型に16進数で値保存

実際のところ

create table blobtest(body BLOB);

16進数でのの保存はBlob literalにて認識させます。
公式によると

BLOB literals are string literals containing hexadecimal data and preceded by a single "x" or "X" character. Example: X'53514C697465'

とあるので、

INSERT INTO blobtest VALUES (x'deadbeef');

試しに

SELECT body FROM blobtest ;
--- ?ޭ��

試しにコマンドラインから読みだしてhexdumpに喰わせると、ちゃんと16進数で格納されている事が確認できます。

 $ sqlite3 base.sqlite3 "SELECT body FROM blobtest" | hexdump
0000000 adde efbe 000a
0000005