2 つの文字列の値を比較し、整数を返します。文字列が同じである場合、関数は 0
を返します。1 番目の文字列がアルファベット順でより大きい場合、関数は 1
を返します。2 番目の文字列がより大きい場合、関数は -1
を返します。
マルチバイトの文字の場合は、バイトエンコーディングを基に比較が行われます。
BTTEXT_PATTERN_CMP 関数 のシノニム。
構文
BPCHARCMP(string1, string2)
引数
- string1
-
CHAR
文字列またはVARCHAR
文字列。 - string2
-
CHAR
文字列またはVARCHAR
文字列。
戻り型
INTEGER
例
以下の例では、TICKIT サンプルデータベースの USERS テーブルを使用します。詳細については、「サンプルデータベース」を参照してください。
USERS テーブル内の最初の 10 個のエントリについて、ユーザーの名と姓をアルファベット順で比較し、名が姓よりアルファベット順で先になるかどうかを判別するには、次の例を使用します。FIRSTNAME の文字列が LASTNAME の文字列よりアルファベット順で後になるエントリについては、関数は 1
を返します。LASTNAME が FIRSTNAME よりアルファベット順で後になる場合、関数は -1
を返します。
SELECT userid, firstname, lastname, BPCHARCMP(firstname, lastname)
FROM users
ORDER BY 1, 2, 3, 4
LIMIT 10;
+--------+-----------+-----------+-----------+
| userid | firstname | lastname | bpcharcmp |
+--------+-----------+-----------+-----------+
| 1 | Rafael | Taylor | -1 |
| 2 | Vladimir | Humphrey | 1 |
| 3 | Lars | Ratliff | -1 |
| 4 | Barry | Roy | -1 |
| 5 | Reagan | Hodge | 1 |
| 6 | Victor | Hernandez | 1 |
| 7 | Tamekah | Juarez | 1 |
| 8 | Colton | Roy | -1 |
| 9 | Mufutau | Watkins | -1 |
| 10 | Naida | Calderon | 1 |
+--------+-----------+-----------+-----------+
この関数が 0
を返す、USERS テーブル内のすべてのエントリを返すには、次の例を使用します。FIRSTNAME と LASTNAME が同じである場合、この関数は 0
を返します。
SELECT userid, firstname, lastname,
BPCHARCMP(firstname, lastname)
FROM users
WHERE BPCHARCMP(firstname, lastname)=0
ORDER BY 1, 2, 3, 4;
+--------+-----------+----------+-----------+
| userid | firstname | lastname | bpcharcmp |
+--------+-----------+----------+-----------+
| 62 | Chase | Chase | 0 |
| 4008 | Whitney | Whitney | 0 |
| 12516 | Graham | Graham | 0 |
| 13570 | Harper | Harper | 0 |
| 16712 | Cooper | Cooper | 0 |
| 18359 | Chase | Chase | 0 |
| 27530 | Bradley | Bradley | 0 |
| 31204 | Harding | Harding | 0 |
+--------+-----------+----------+-----------+