【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
大変助かりました。ありがとうございます!