MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説

MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。
CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。

ASCII()とORD()の違い

どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。

  • ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。
  • ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字コードを返します。

検証用テーブルの作成

まず、動作確認のためのテーブルを作成しましょう。

mysql> create table DemoTable
(
    Value int,
    Value1 char(1),
    Value2 char(1)
);
Query OK, 0 rows affected (0.80 sec)

レコードの挿入

INSERT文を使って、数値とそれに対応する文字のペアを登録します。「65」は「A」、「97」は「a」に対応する文字コードです。

mysql> insert into DemoTable values(65,'A','A');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(97,'a','a');
Query OK, 1 row affected (0.13 sec)

登録データの確認

SELECT文でテーブル内の全レコードを表示します。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-------+--------+--------+
| Value | Value1 | Value2 |
+-------+--------+--------+
|    65 |      A |      A |
|    97 |      a |      a |
+-------+--------+--------+
2 rows in set (0.00 sec)

ASCII()とORD()を実行してみる

それでは、CHAR()ASCII()ORD() を組み合わせて実行し、互いに逆の変換が行われることを確認してみましょう。

mysql> select char(Value),ASCII(Value1),ORD(Value2) from DemoTable;

実行結果は以下の通りです。

+-------------+---------------+-------------+
| char(Value) | ASCII(Value1) | ORD(Value2) |
+-------------+---------------+-------------+
| A           |            65 |          65 |
| a           |            97 |          97 |
+-------------+---------------+-------------+
2 rows in set (0.03 sec)

このように、char(Value) で数値が文字に変換され、ASCII(Value1) および ORD(Value2) でその文字が元の数値に戻っていることが分かります。つまり、CHAR() の逆関数として ASCII()ORD() のどちらでも同じ結果が得られます。

  1. MySQLの「<>」演算子とは?意味と使い方を実例付きで解説

    MySQLにおける「<>」演算子の意味 MySQLで使われる記号「<>」は、「等しくない」ことを判定する比較演算子であり、おなじみの「!=」(NOT EQUAL)演算子とまったく同じ働きをします。どちらも結果はブール値としてtinyint(1)型で返され、条件が成立すれば1、成立しなければ0となります。 ケース1:「!=」演算子を使用する場合 まずは「!=」演算子を使ったシンプルな例です。次のクエリを実行してみましょう。 mysql> select 3!=5; 実行結果は以下の通りです。 +------+ | 3!=5 | +------+ | 1 | +-

  2. MySQLのDECIMAL(x,0)で扱える数値の範囲はどのくらい?

    MySQLでは、DECIMAL型はINTEGER型やBIGINT型よりも大きな数値を扱うことができます。BIGINTの場合、最大で18446744073709551615まで格納できますが、DECIMALではDECIMAL(65,0)を指定することで、65桁すべてが「9」の巨大な数値を保存することが可能です。DECIMAL(x,0)に必要なストレージ容量DECIMALは数値をバイト単位で格納しており、必要なストレージ容量は次の計算式で求められます。StorageRequirementInBytes = (x/9) + remaining; WHERE remaining = round_up(