ENDS_WITH
説明
ENDS_WITH関数は、文字列が指定された接尾辞で終わるかどうかを確認します。
構文
ENDS_WITH(<str>, <suffix>)
パラメータ
| パラメータ | 説明 |
|---|---|
str | チェックするメイン文字列。型: VARCHAR |
suffix | マッチするサフィックス文字列。型: VARCHAR |
戻り値
BOOLEAN型を返します(Dorisでは TINYINT として表示され、1がtrueを表し、0がfalseを表します)。
マッチング規則:
- 完全サフィックスマッチ、大文字小文字を区別
- 空のサフィックスは任意の文字列にマッチ(trueを返す)
- UTF-8マルチバイト文字の正しいマッチングをサポート
- サフィックスの長さはメイン文字列の長さを超えることはできません(サフィックスが空の場合を除く)
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返します
- サフィックスが空文字列の場合、trueを返します(任意の文字列は空文字列で終わります)
- メイン文字列が空でサフィックスが空でない場合、falseを返します
- 両方が空文字列の場合、trueを返します
例
- 基本的なサフィックスマッチング
SELECT ENDS_WITH('Hello doris', 'doris'), ENDS_WITH('Hello doris', 'Hello');
+-----------------------------------+-----------------------------------+
| ENDS_WITH('Hello doris', 'doris') | ENDS_WITH('Hello doris', 'Hello') |
+-----------------------------------+-----------------------------------+
| 1 | 0 |
+-----------------------------------+-----------------------------------+
- 大文字小文字の区別
SELECT ENDS_WITH('Hello World', 'world'), ENDS_WITH('Hello World', 'World');
+-----------------------------------+-----------------------------------+
| ENDS_WITH('Hello World', 'world') | ENDS_WITH('Hello World', 'World') |
+-----------------------------------+-----------------------------------+
| 0 | 1 |
+-----------------------------------+-----------------------------------+
- NULL値の処理
SELECT ENDS_WITH(NULL, 'test'), ENDS_WITH('test', NULL);
+--------------------------+--------------------------+
| ENDS_WITH(NULL, 'test') | ENDS_WITH('test', NULL) |
+--------------------------+--------------------------+
| NULL | NULL |
+--------------------------+--------------------------+
- 空文字列の処理
SELECT ENDS_WITH('hello', ''), ENDS_WITH('', 'world');
+-------------------------+--------------------------+
| ENDS_WITH('hello', '') | ENDS_WITH('', 'world') |
+-------------------------+--------------------------+
| 1 | 0 |
+-------------------------+--------------------------+
- 完全文字列マッチング
SELECT ENDS_WITH('test', 'test'), ENDS_WITH('testing', 'test');
+---------------------------+------------------------------+
| ENDS_WITH('test', 'test') | ENDS_WITH('testing', 'test') |
+---------------------------+------------------------------+
| 1 | 1 |
+---------------------------+------------------------------+
- ファイル拡張子チェック
SELECT ENDS_WITH('document.pdf', '.pdf'), ENDS_WITH('image.jpg', '.png');
+------------------------------------+----------------------------------+
| ENDS_WITH('document.pdf', '.pdf') | ENDS_WITH('image.jpg', '.png') |
+------------------------------------+----------------------------------+
| 1 | 0 |
+------------------------------------+----------------------------------+
- UTF-8マルチバイト文字
SELECT ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai'), ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì');
+------------------------------------------+---------------------------------------+
| ENDS_WITH('hello ṭṛì ḍḍumai', 'ḍḍumai') | ENDS_WITH('hello ṭṛì ḍḍumai', 'ṭṛì') |
+------------------------------------------+---------------------------------------+
| 1 | 0 |
+------------------------------------------+---------------------------------------+
- URLパスチェック
SELECT ENDS_WITH('https://example.com/api', '/api'), ENDS_WITH('https://example.com/', '.html');
+--------------------------------------------+---------------------------------------------+
| ENDS_WITH('https://example.com/api', '/api') | ENDS_WITH('https://example.com/', '.html') |
+--------------------------------------------+---------------------------------------------+
| 1 | 0 |
+--------------------------------------------+---------------------------------------------+
- 数値文字列サフィックス
SELECT ENDS_WITH('123456789', '789'), ENDS_WITH('123456789', '456');
+--------------------------------+--------------------------------+
| ENDS_WITH('123456789', '789') | ENDS_WITH('123456789', '456') |
+--------------------------------+--------------------------------+
| 1 | 0 |
+--------------------------------+--------------------------------+
- メールドメインチェック
SELECT ENDS_WITH('user@gmail.com', '.com'), ENDS_WITH('admin@company.org', '.com');
+------------------------------------+--------------------------------------+
| ENDS_WITH('user@gmail.com', '.com') | ENDS_WITH('admin@company.org', '.com') |
+------------------------------------+--------------------------------------+
| 1 | 0 |
+------------------------------------+--------------------------------------+