STARTS_WITH
説明
STARTS_WITH関数は、文字列が指定されたプレフィックスで始まるかどうかをチェックします。これは完全なプレフィックスマッチングを実行し、大文字小文字を区別するブール関数です。
構文
STARTS_WITH(<str>, <prefix>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | チェックするメイン文字列。型: VARCHAR |
<prefix> | マッチするプレフィックス文字列。型: VARCHAR |
戻り値
BOOLEAN型を返します(Dorisでは TINYINT として表示され、trueは1、falseは0)。
マッチングルール:
- 完全なプレフィックスマッチ、大文字小文字を区別
- 空のプレフィックスは任意の文字列にマッチ(trueを返す)
- UTF-8マルチバイト文字の正しいマッチングをサポート
- プレフィックスの長さはメイン文字列の長さを超えることはできません(プレフィックスが空でない限り)
特殊ケース:
- いずれかの引数がNULLの場合、NULLを返します
- プレフィックスが空文字列の場合、trueを返します(任意の文字列は空文字列で始まる)
- メイン文字列が空でプレフィックスが空でない場合、falseを返します
- 両方とも空文字列の場合、trueを返します
例
- 基本的なプレフィックスマッチング
SELECT STARTS_WITH('hello world', 'hello'), STARTS_WITH('hello world', 'world');
+-------------------------------------+-------------------------------------+
| STARTS_WITH('hello world', 'hello') | STARTS_WITH('hello world', 'world') |
+-------------------------------------+-------------------------------------+
| 1 | 0 |
+-------------------------------------+-------------------------------------+
- 大文字小文字の区別
SELECT STARTS_WITH('Hello World', 'hello'), STARTS_WITH('Hello World', 'Hello');
+-------------------------------------+-------------------------------------+
| STARTS_WITH('Hello World', 'hello') | STARTS_WITH('Hello World', 'Hello') |
+-------------------------------------+-------------------------------------+
| 0 | 1 |
+-------------------------------------+-------------------------------------+
- NULL値の処理
SELECT STARTS_WITH(NULL, 'test'), STARTS_WITH('test', NULL);
+----------------------------+----------------------------+
| STARTS_WITH(NULL, 'test') | STARTS_WITH('test', NULL) |
+----------------------------+----------------------------+
| NULL | NULL |
+----------------------------+----------------------------+
- 空文字列の処理
SELECT STARTS_WITH('hello', ''), STARTS_WITH('', 'world');
+---------------------------+----------------------------+
| STARTS_WITH('hello', '') | STARTS_WITH('', 'world') |
+---------------------------+----------------------------+
| 1 | 0 |
+---------------------------+----------------------------+
- 完全文字列マッチ
SELECT STARTS_WITH('test', 'test'), STARTS_WITH('test', 'testing');
+-----------------------------+--------------------------------+
| STARTS_WITH('test', 'test') | STARTS_WITH('test', 'testing') |
+-----------------------------+--------------------------------+
| 1 | 0 |
+-----------------------------+--------------------------------+
- ファイルパスの確認
SELECT STARTS_WITH('/home/user/file.txt', '/home'), STARTS_WITH('C:\\Windows\\file.txt', 'C:\\');
+--------------------------------------------+------------------------------------------------+
| STARTS_WITH('/home/user/file.txt', '/home') | STARTS_WITH('C:\\Windows\\file.txt', 'C:\\') |
+--------------------------------------------+------------------------------------------------+
| 1 | 1 |
+--------------------------------------------+------------------------------------------------+
- UTF-8 マルチバイト文字
SELECT STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì'), STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai');
+------------------------------------------+---------------------------------------------+
| STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì') | STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai') |
+------------------------------------------+---------------------------------------------+
| 1 | 0 |
+------------------------------------------+---------------------------------------------+
- URLとプロトコルのチェック
SELECT STARTS_WITH('https://example.com', 'https://'), STARTS_WITH('ftp://server.com', 'http://');
+----------------------------------------------+---------------------------------------------+
| STARTS_WITH('https://example.com', 'https://') | STARTS_WITH('ftp://server.com', 'http://') |
+----------------------------------------------+---------------------------------------------+
| 1 | 0 |
+----------------------------------------------+---------------------------------------------+
- 数値文字列プレフィックス
SELECT STARTS_WITH('123456789', '123'), STARTS_WITH('987654321', '123');
+----------------------------------+----------------------------------+
| STARTS_WITH('123456789', '123') | STARTS_WITH('987654321', '123') |
+----------------------------------+----------------------------------+
| 1 | 0 |
+----------------------------------+----------------------------------+
- 特殊文字と記号
SELECT STARTS_WITH('@username', '@'), STARTS_WITH('#hashtag', '#');
+-------------------------------+--------------------------------+
| STARTS_WITH('@username', '@') | STARTS_WITH('#hashtag', '#') |
+-------------------------------+--------------------------------+
| 1 | 1 |
+-------------------------------+--------------------------------+
キーワード
STARTS_WITH