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

MySQL ENUM値はどのようにソートされますか?


MYSQLでは、各ENUM値がインデックス番号に関連付けられていることがわかっています。 ENUM値をソートするための基礎は、それらのインデックス番号でもあります。さらに、インデックス番号は、列挙型メンバーが列仕様にリストされている順序によって異なります。たとえば、ENUM(「GOOD」、「EXCELLENT」)列では、「GOOD」は「EXCELLENT」の前に並べ替えられます。言い換えれば、「GOOD」のインデックス番号は「1」、「EXCELLENT」のインデックス番号は「2」と言えます。

MySQLは、空の文字列とnull値をENUMに格納することもできます。空の文字列を空でない文字列の前にソートし、NULLを空の文字列の前にソートします。したがって、並べ替えの順序は次のようになります-

ENUM値の並べ替え順序

1. NULL
2.空の文字列
3.空でない文字列

この例では、ENUM列「grade」を持つテーブル「result」があります。このテーブルには、次の値が含まれています。

mysql> Select * from Result;
+-----+--------+-------+
| Id  | Name   | Grade |
+-----+--------+-------+
| 100 | Gaurav | GOOD  |
| 101 | Rahul  | POOR  |
| 102 | Rahul  | NULL  |
| 103 | Mohan  |       |
+-----+--------+-------+
4 rows in set (0.00 sec)

ここで、ORDER BY句を使用した後、MySQLはソートされた出力を返します。出力がインデックス番号に基づいてソートされていることがわかります。

mysql> Select * from result order by grade;
+-----+--------+-------+
| Id  | Name   | Grade |
+-----+--------+-------+
| 102 | Rahul  | NULL  |
| 103 | Mohan  |       |
| 101 | Rahul  | POOR  |
| 100 | Gaurav | GOOD  |
+-----+--------+-------+
4 rows in set (0.00 sec)

  1. PHPとMySQLで「ブール」値を処理する方法は?

    MySQLバージョン8.0.12を使用しています。まず、MySQLのバージョンを確認しましょう: mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12    | +-----------+ 1 row in set (0.00 sec) MySQLでブール値を処理するには、BOOL、BOOLEAN、またはTINYINT(1)を使用できます。 BOOLまたはBOOLEANを使用する場合、MySQLはそれを内部でTINYINT(1)に変換します。 BOOLまたはBOOLE

  2. 列値のMySQLでENUMを設定します

    テーブルの作成中に、ENUM値が必要な列のENUMタイプを設定します。まずテーブルを作成しましょう- mysql> create table DemoTable2019    -> (    -> StudentMarks int,    -> StudentStatus ENUM('First','Second','Fail')    -> ); Query OK, 0 rows affected (1.75 sec) 挿入コマンド-