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

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が返される点を覚えておきましょう。

  1. 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

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

    MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字