メインコンテンツまでスキップ
バージョン: 26.x

COUNT_SUBSTRINGS

説明

COUNT_SUBSTRINGS関数は、文字列内で指定された部分文字列が出現する回数をカウントします。注意:現在の実装では、マッチが見つかった場合、部分文字列の長さ分シフトした後に検索を継続します。例えば、str='ccc'でpattern='cc'の場合、返される結果は1です。

構文

COUNT_SUBSTRINGS(<str>, <pattern>[, <start_pos>])

パラメータ

Parameterデスクリプション
<str>検索対象の文字列。型: STRING
<pattern>一致させる部分文字列。型: STRING
<start_pos>検索を開始する位置(1ベース)。型: INT。オプション

Return Value

INT型を返し、文字列内に部分文字列が現れる回数を表します。

特殊なケース:

  • strがNULLの場合、NULLを返す
  • patternが空文字列の場合、0を返す
  • strが空文字列の場合、0を返す
  • start_posが0以下または文字列の長さを超える場合、0を返す

Examples

  1. 基本的な使用方法
SELECT count_substrings('a1b1c1d', '1');
+----------------------------------+
| count_substrings('a1b1c1d', '1') |
+----------------------------------+
| 3 |
+----------------------------------+
  1. 連続するカンマの場合
SELECT count_substrings(',,a,b,c,', ',');
+-----------------------------------+
| count_substrings(',,a,b,c,', ',') |
+-----------------------------------+
| 5 |
+-----------------------------------+
  1. 重複する部分文字列のケース
SELECT count_substrings('ccc', 'cc');
+--------------------------------+
| count_substrings('ccc', 'cc') |
+--------------------------------+
| 1 |
+--------------------------------+
  1. NULL値の処理
SELECT count_substrings(NULL, ',');
+-----------------------------+
| count_substrings(NULL, ',') |
+-----------------------------+
| NULL |
+-----------------------------+
  1. 空文字列の処理
SELECT count_substrings('a,b,c,abcde', '');
+-------------------------------------+
| count_substrings('a,b,c,abcde', '') |
+-------------------------------------+
| 0 |
+-------------------------------------+
  1. start position パラメータの使用
SELECT count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 1), 
count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 6);
+-----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
| count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 1) | count_substrings('ṭṛì ḍḍumai ṭṛì ti ḍḍumannàri', 'ḍḍu', 6) |
+-----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
| 2 | 1 |
+-----------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
  1. 開始位置が範囲外です
SELECT count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 0), 
count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 30);
+------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 0) | count_substrings('éèêëìíîïðñòó éèêëìíîïðñòó', 'éèê', 30) |
+------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| 0 | 0 |
+------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
  1. 開始位置が範囲外です
SELECT count_substrings('你好,世界!你好,世界!', '世界', 0), 
count_substrings('你好,世界!你好,世界!', '世界', 30);
+-----------------------------------------------------------------------+------------------------------------------------------------------------+
| count_substrings('你好,世界!你好,世界!', '世界', 0) | count_substrings('你好,世界!你好,世界!', '世界', 30) |
+-----------------------------------------------------------------------+------------------------------------------------------------------------+
| 0 | 0 |
+-----------------------------------------------------------------------+------------------------------------------------------------------------+