SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【MySQL】SQL内で文字列を16進表現する

問題

こんなとき

mysql-hex

答え

MySQLだと「0x~~」形式で、文字列の16進表現が使える。

SELECT * FROM T WHERE name = 0xEFBCB3EFBCB4303030343030; /* 'ST000400'(全角含む) */
SELECT * FROM T WHERE name = 0xE38182E38184E38186E38188E3818A; /* 'あいうえお' */
SELECT * FROM T WHERE name = 0x82A082A282A482A682A8; /* sjisの'あいうえお' */
UPDATE T SET name = 0x82A082A282A482A682A8 WHERE id = 123;

文字列の16進表現を作るには

SQLを使うと

SELECT HEX('あいうえお');
SELECT HEX(CONVERT('あいうえお' using sjis));

JavaScriptで作ると

'あいうえお'.split('').map(function(c){return c.charCodeAt(0).toString(16)}).join('')

関連するメモ

コメント