MySQLのSTRCMP()関数とは?文字列比較の結果と戻り値を徹底解説
MySQLのSTRCMP()関数は、その名の通り2つの文字列を比較するために使用される関数です。比較対象となる2つの文字列を引数として渡す必要があります。構文は以下の通りです。
構文
STRCMP(Str1, Str2)
各引数の意味は次の通りです。
- Str1: 比較に使用する1つ目の文字列
- Str2: 比較に使用する2つ目の文字列
基本的な使用例
mysql> Select STRCMP('MySQL', 'MySQL');
+--------------------------+
| STRCMP('MySQL', 'MySQL') |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (0.00 sec)
mysql> Select STRCMP('MSQL', 'MySQL');
+-------------------------+
| STRCMP('MSQL', 'MySQL') |
+-------------------------+
| -1 |
+-------------------------+
1 row in set (0.00 sec)
mysql> Select STRCMP('MySQL', 'MSQL');
+-------------------------+
| STRCMP('MySQL', 'MSQL') |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)上記の例では、2つの文字列同士を比較し、その結果に応じてMySQLが戻り値を返していることがわかります。
STRCMP()関数が返す4種類の出力
STRCMP()関数は、比較結果として基本的に以下の4種類の値を返します。
- 0: 両方の文字列が同一である場合に返されます。
- 1: 2つ目の文字列(Str2)が1つ目の文字列(Str1)より小さい場合に返されます。
- -1: 1つ目の文字列(Str1)が2つ目の文字列(Str2)より小さい場合に返されます。
- NULL: 引数のどちらか一方、または両方がNULLの場合に返されます。
すべてのパターンを確認する実行例
mysql> Select STRCMP('Test', 'Test')As 'Equal Strings', STRCMP('TestABC', 'Test')AS '2nd Smaller', STRCMP('Test', 'TestABC')AS '1st Smaller', STRCMP('Test', NULL)As '2nd NULL',STRCMP(NULL, 'Test')AS '1st NULL',STRCMP(NULL,NULL)AS 'Both NULL';
+---------------+-------------+-------------+----------+----------+-----------+
| Equal Strings | 2nd Smaller | 1st Smaller | 2nd NULL | 1st NULL | Both NULL |
+---------------+-------------+-------------+----------+----------+-----------+
| 0 | 1 | -1 | NULL | NULL | NULL |
+---------------+-------------+-------------+----------+----------+-----------+
1 row in set (0.00 sec)このように、STRCMP()関数を使えば1つのクエリで複数の比較パターンを一度に検証できます。文字列の大小関係を判定したい場合や、データの整合性チェックを行いたい場合などに便利な関数です。なお、NULLの扱いには注意が必要で、引数にNULLが含まれる場合は必ずNULLが返される点を覚えておきましょう。
-
MySQLでserver_idとUUIDを連結する方法
MySQLでserver_idとUUIDを連結する方法 MySQLでは、CONCAT()関数を使うことで、サーバーのserver_idとUUID()関数が生成する一意な文字列を簡単に連結できます。構文は以下の通りです。 SELECT CONCAT(@@server_id, UUID()); @@server_idはシステム定義の変数で、現在接続しているMySQLサーバーに設定されているserver_idの値を取得します。一方、UUID()は呼び出すたびに重複しない一意な文字列(Universal Unique Identifier)を生成する関数です。 実際のクエリ例 それでは、実際にserv
-
MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説
MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字