MySQLの文字列関数の1つは、STRCMP()です。 。この関数を使用すると、2つの文字列を並べ替え順序に従って比較できます。
この関数は2つの引数を受け入れます。各引数は、比較する文字列です。 1のいずれかを返します 、-1 、または0 、並べ替え順序に従って、最初の文字列が2番目の文字列よりも大きいか、小さいか、同じサイズかによって異なります。
構文
構文は次のとおりです。
STRCMP(expr1,expr2)
ここで、expr1 最初の文字列であり、expr2 2番目の文字列です。
例
並べ替え順序に従って、最初の文字列が2番目の文字列よりも小さい例を次に示します。
SELECT STRCMP('A', 'B'); 結果:
+------------------+
| STRCMP('A', 'B') |
+------------------+
| -1 |
+------------------+ 引数を入れ替えると、次のようになります。
SELECT STRCMP('B', 'A'); 結果:
+------------------+
| STRCMP('B', 'A') |
+------------------+
| 1 |
+------------------+ そして、両方の引数に同じ文字列を使用すると、次のようになります。
SELECT STRCMP('A', 'A'); 結果:
+------------------+
| STRCMP('A', 'A') |
+------------------+
| 0 |
+------------------+ もちろん、文字列は複数の文字で構成できます(おそらくそうなります):
SELECT STRCMP('A big box', 'Wind and rain') AS Result; 結果:
+--------+ | Result | +--------+ | -1 | +--------+
照合
STRCMP() 関数は、文字列を比較するときに照合を使用します。これは、使用されている照合に応じて異なる結果が得られる可能性があることを意味します。次の例はこれを示しています。
大文字と小文字を区別しない
この例では、大文字と小文字を区別しない照合(_ci)を使用して比較を実行します。 照合の一部は大文字と小文字を区別しないことを意味します):
SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci; SELECT STRCMP(@lowercase, @uppercase) AS Result;
結果:
+--------+ | Result | +--------+ | 0 | +--------+
大文字と小文字を区別する
この例では、大文字と小文字を区別する照合(_cs)を使用して比較を実行します。 照合の一部は大文字と小文字を区別することを意味します):
SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs; SELECT STRCMP(@lowercase, @uppercase) AS Result;
結果:
+--------+ | Result | +--------+ | -1 | +--------+
MySQLでは、照合はさまざまなレベル(接続レベル、データベースレベル、列レベルなど)で設定できます。使用されている照合がわからない場合は、MySQLで照合を見つける方法をご覧ください。