メインコンテンツまでスキップ
に最終更新

STARTS_WITH

説明​

STARTS_WITH 関数は、文字列が指定したプレフィックスで始まるかどうかを判定します。プレフィックスの完全一致を判定し、大文字と小文字を区別する真偽値関数です。

構文​

STARTS_WITH(<str>, <prefix>)

パラメータ​

パラメータ説明
<str>判定対象の文字列。型: VARCHAR
<prefix>照合するプレフィックス文字列。型: VARCHAR

戻り値​

BOOLEAN 型を返します(Doris では TINYINT として表示され、真は 1、偽は 0 です)。

照合規則:

  • プレフィックスの完全一致を判定し、大文字と小文字を区別します
  • 空のプレフィックスは任意の文字列と一致します(真を返します)
  • UTF-8 のマルチバイト文字も正しく照合できます
  • プレフィックスの長さは、空のプレフィックスを除き、対象文字列の長さを超えることはできません

特殊なケース:

  • いずれかの引数が NULL の場合は NULL を返します
  • プレフィックスが空文字列の場合は真を返します(どの文字列も空文字列で始まるため)
  • 対象文字列が空で、プレフィックスが空でない場合は偽を返します
  • 両方とも空文字列の場合は真を返します

使用例​

  1. 基本的なプレフィックス照合
SELECT STARTS_WITH('hello world', 'hello'), STARTS_WITH('hello world', 'world');
+-------------------------------------+-------------------------------------+
| STARTS_WITH('hello world', 'hello') | STARTS_WITH('hello world', 'world') |
+-------------------------------------+-------------------------------------+
| 1 | 0 |
+-------------------------------------+-------------------------------------+
  1. 大文字と小文字の区別
SELECT STARTS_WITH('Hello World', 'hello'), STARTS_WITH('Hello World', 'Hello');
+-------------------------------------+-------------------------------------+
| STARTS_WITH('Hello World', 'hello') | STARTS_WITH('Hello World', 'Hello') |
+-------------------------------------+-------------------------------------+
| 0 | 1 |
+-------------------------------------+-------------------------------------+
  1. NULL 値の扱い
SELECT STARTS_WITH(NULL, 'test'), STARTS_WITH('test', NULL);
+----------------------------+----------------------------+
| STARTS_WITH(NULL, 'test') | STARTS_WITH('test', NULL) |
+----------------------------+----------------------------+
| NULL | NULL |
+----------------------------+----------------------------+
  1. 空文字列の扱い
SELECT STARTS_WITH('hello', ''), STARTS_WITH('', 'world');
+---------------------------+----------------------------+
| STARTS_WITH('hello', '') | STARTS_WITH('', 'world') |
+---------------------------+----------------------------+
| 1 | 0 |
+---------------------------+----------------------------+
  1. 文字列全体の一致
SELECT STARTS_WITH('test', 'test'), STARTS_WITH('test', 'testing');
+-----------------------------+--------------------------------+
| STARTS_WITH('test', 'test') | STARTS_WITH('test', 'testing') |
+-----------------------------+--------------------------------+
| 1 | 0 |
+-----------------------------+--------------------------------+
  1. ファイルパスの判定
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 |
+--------------------------------------------+------------------------------------------------+
  1. UTF-8 マルチバイト文字
SELECT STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì'), STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai');
+------------------------------------------+---------------------------------------------+
| STARTS_WITH('ṭṛì ḍḍumai hello', 'ṭṛì') | STARTS_WITH('ṭṛì ḍḍumai hello', 'ḍḍumai') |
+------------------------------------------+---------------------------------------------+
| 1 | 0 |
+------------------------------------------+---------------------------------------------+
  1. 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 |
+----------------------------------------------+---------------------------------------------+
  1. 数字からなる文字列のプレフィックス
SELECT STARTS_WITH('123456789', '123'), STARTS_WITH('987654321', '123');
+----------------------------------+----------------------------------+
| STARTS_WITH('123456789', '123') | STARTS_WITH('987654321', '123') |
+----------------------------------+----------------------------------+
| 1 | 0 |
+----------------------------------+----------------------------------+
  1. 特殊文字と記号
SELECT STARTS_WITH('@username', '@'), STARTS_WITH('#hashtag', '#');
+-------------------------------+--------------------------------+
| STARTS_WITH('@username', '@') | STARTS_WITH('#hashtag', '#') |
+-------------------------------+--------------------------------+
| 1 | 1 |
+-------------------------------+--------------------------------+

キーワード​

STARTS_WITH