【MySQL初心者向け】文字列を16進文字列に変換する方法と元の文字列に戻す方法(HEX, UNHEX)

【MySQL初心者向け】文字列を16進文字列に変換する方法と元の文字列に戻す方法(HEX, UNHEX)

「sql hex to string」や「sql hex 逆」で検索して来られた方向けだと思います。

概要

大文字小文字が混じった管理コードを検索しやすくするために16進文字列に変換してデータベースに登録していたのですが、Symfony DoctrineでBINARY検索が使えたので変換の必要がなくなり、今まで登録していた16進文字列をもとの文字列に戻す方法についてです。

HEXの逆をやりたかったのですが常識過ぎるのか、調べ方が悪かったのか、すぐに見つからなかったのでメモとして残すことにしました。

環境

Fedora7
PHP5.2
Symfony1.1.9
Doctorine

とりあえず「HEX」について

N_or_S が数字の場合、N の 16 進値の文字列表現を戻します。N は longlong ( BIGINT ) 数です。これは、CONV(N,10,16) に等価になります。
N_or_S がストリングの場合は、N_or_S の各文字が二桁の 16 進数に変換される、N_or_S の 16 進数字列表現を戻します。

数字の場合はわかりますよね。10進数や2進数などを16進数文字列に変換します。

ストリングの場合もわかると思いますが、1文字ずつ2桁の16進文字列に変換するということです。

使い方

16進文字列を元の文字列に戻すのは「UNHEX」

文字列型の16進数のそれぞれのペアを数字として解釈し、それをBINARY STRINGとして変換します。

使い方

HEXをUNHEXに置き換えただけですが。。

参考URL

https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_unhex

大変助かりました。ありがとうございます!

お問い合わせはこちらから

弊社へご相談やお問合せはこちら(無料)
お電話でのお問い合わせはこちら
上へ