すべてのプロダクト
Search
ドキュメントセンター

Lindorm:文字列関数

最終更新日:Mar 29, 2026

Lindorm SQL は、文字列値の操作、検索、ハッシュ化のための一連の文字列関数をサポートしています。このページで説明するすべての関数には、LindormTable 2.5.1.1 以降が必要です。

現在のバージョンを確認したり、アップグレードしたりするには、「LindormTable のリリースノート」および「Lindorm インスタンスのマイナーエンジンバージョンのアップグレード」をご参照ください。

サポートされている文字列関数

カテゴリ関数説明
一般的な操作

CONCAT

複数の文字列を 1 つの文字列に連結します

LENGTH

文字列の文字数を返します

REPLACE

部分文字列のすべての出現箇所を置換します

REVERSE

文字列を反転させます

SUBSTR

位置と長さを指定して部分文字列を抽出します

TRIM

先頭と末尾のスペースを削除します
大文字/小文字の変換

LOWER

すべての文字を小文字に変換します

UPPER

すべての文字を大文字に変換します
正規表現

REGEXP_REPLACE

正規表現に一致する部分文字列を置換します

REGEXP_SUBSTR

正規表現に一致する最初の部分文字列を抽出します
プレフィックスマッチング

START_WITH

文字列が指定されたプレフィックスで始まる場合に true を返します
全文検索

MATCH

検索インデックスを使用して、列の値と検索式を照合します
暗号化ハッシュ

MD5

文字列の MD5 ハッシュを返します

SHA256

文字列の SHA256 ハッシュを返します

CONCAT

2 つ以上の文字列を 1 つの文字列に連結します。値の間にデリミタは追加されません。

構文

CONCAT('string1', 'string2', ..., 'stringN')

パラメーター

パラメーター必須説明
'string1', 'string2', ..., 'stringN'はい連結する文字列。2 つ以上の文字列値を渡します。

SELECT concat('a', 'b', 'c') AS val;

結果:

+-----+
| val |
+-----+
| abc |
+-----+

LENGTH

文字列の文字数を返します。

構文

LENGTH('string')

パラメーター

パラメーター必須説明
stringはい測定する文字列。

SELECT length('abc') AS len;

結果:

+-----+
| len |
+-----+
| 3   |
+-----+

LOWER

文字列内のすべての文字を小文字に変換します。文字以外の文字は影響を受けません。

構文

LOWER('string')

パラメーター

パラメーター必須説明
stringはい変換する文字列。

例 1: ABC を小文字に変換します。

SELECT lower('ABC') AS val;

結果:

+-----+
| val |
+-----+
| abc |
+-----+

例 2: 大文字と小文字が混在する文字列を小文字に変換します。

SELECT lower('Abc') AS val;

結果:

+-----+
| val |
+-----+
| abc |
+-----+

UPPER

文字列内のすべての文字を大文字に変換します。文字以外の文字は影響を受けません。

構文

UPPER('string')

パラメーター

パラメーター必須説明
stringはい変換する文字列。

例 1: abc を大文字に変換します。

SELECT upper('abc') AS val;

結果:

+-----+
| val |
+-----+
| ABC |
+-----+

例 2:大文字と小文字が混在した文字列を大文字に変換します。

SELECT upper('aBC') AS val;

結果:

+-----+
| val |
+-----+
| ABC |
+-----+

TRIM

文字列の先頭と末尾のスペースを削除します。文字列内のスペースは保持されます。

構文

TRIM('string')

パラメーター

パラメーター必須説明
stringはいトリミングする文字列。

SELECT trim(' abc    ') AS str;

結果:

+-----+
| str |
+-----+
| abc |
+-----+

REPLACE

文字列内の部分文字列のすべての出現箇所を置換します。

構文

REPLACE('string', 'from_str', 'to_str')

パラメーター

パラメーター必須説明
stringはいソース文字列。
from_strはい検索して置換する部分文字列。
to_strはい置換後の部分文字列。

例 1: abc の中の bccd に置換します。

SELECT replace('abc', 'bc', 'cd') AS val;

結果:

+-----+
| val |
+-----+
| acd |
+-----+

例 2: abcbc の中の bc のすべての出現箇所を cd に置換します。

SELECT replace('abcbc', 'bc', 'cd') AS val;

結果:

+-------+
|  val  |
+-------+
| acdcd |
+-------+

REVERSE

文字列内の文字を反転させます。

構文

REVERSE('string')

パラメーター

パラメーター必須説明
stringはい反転させる文字列。

SELECT reverse('abc') AS val;

結果:

+-----+
| val |
+-----+
| cba |
+-----+

SUBSTR

指定された位置から始まる部分文字列を、オプションで長さ制限を付けて抽出します。

構文

SUBSTR(string, position [, length])

パラメーター

パラメーター必須説明
stringはいソース文字列。
positionはい抽出を開始する 1 から始まる位置。1 以上の整数である必要があります。
lengthいいえ抽出する文字数。1 以上の整数である必要があります。デフォルト:position から文字列の末尾までを抽出します。

例 1: 位置 2 から文字列の末尾までを抽出します。

SELECT substr('abc', 2) AS val;

結果:

+-----+
| val |
+-----+
| bc  |
+-----+

例 2: 位置 1 から 2 文字を抽出します。

SELECT substr('abc', 1, 2) AS val;

結果:

+-----+
| val |
+-----+
| ab  |
+-----+

START_WITH

文字列が指定されたプレフィックスで始まる場合は true を、そうでない場合は false を返します。

構文

START_WITH('string', 'prefix')

パラメーター

パラメーター必須説明
stringはいチェックする文字列。
prefixはいstring の先頭と照合するプレフィックス。

例 1: abcab で始まるかどうかをチェックします。

SELECT start_with('abc', 'ab') AS val;

結果:

+------+
| val  |
+------+
| true |
+------+

例 2: abcbc で始まるかどうかをチェックします。

SELECT start_with('abc', 'bc') AS val;

結果:

+-------+
| val   |
+-------+
| false |
+-------+

REGEXP_REPLACE

指定された位置から検索を開始し、正規表現に一致する部分文字列を置換します。

構文

REGEXP_REPLACE('string', pattern, replacement [, position])

パラメーター

パラメーター必須説明
stringはいソース文字列。
patternはい一致ルールを定義する正規表現パターン。
replacementはい各一致箇所に代入する文字列。
positionいいえ検索を開始する 1 から始まる文字位置。1 以上の整数である必要があります。デフォルト:1 (最初の文字から開始)。

例 1: abc の中の b のすべての一致を c に置換します (デフォルト位置)。

SELECT regexp_replace('abc', 'b', 'c') AS val;

結果:

+-----+
| val |
+-----+
| acc |
+-----+

例 2: 位置 2 から開始して、abcbc の中の b の一致を置換します。

SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;

結果:

+-------+
|  val  |
+-------+
| acccc |
+-------+

例 3: 位置 3 から開始して、abcbc の中の b の一致を置換します。位置 2 の b は置換されません。

SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;

結果:

+-------+
|  val  |
+-------+
| abccc |
+-------+

REGEXP_SUBSTR

指定された位置から検索を開始し、正規表現に一致する最初の部分文字列を返します。

構文

REGEXP_SUBSTR('string', pattern [, position])

パラメーター

パラメーター必須説明
stringはいソース文字列。
patternはい一致ルールを定義する正規表現パターン。
positionいいえ検索を開始する 1 から始まる文字位置。1 以上の整数である必要があります。デフォルト:1 (最初の文字から開始)。

例 1: 最初の文字から (デフォルト)、abc の中の b を検索します。

SELECT regexp_substr('abc', 'b') AS val;

結果:

+-----+
| val |
+-----+
| b   |
+-----+

例 2: 位置 3 から開始して、abc の中の b を検索します。b は位置 2 にあるため、一致は見つかりません。

SELECT regexp_substr('abc', 'b', 3) AS val;

結果:

+-----+
| val |
+-----+
|     |
+-----+

MD5

文字列の MD5 ハッシュを返します。

構文

MD5('string')

パラメーター

パラメーター必須説明
stringはいハッシュ化する文字列。

SELECT md5('abc') AS val;

結果:

+----------------------------------+
|               val                |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+

SHA256

文字列の SHA256 ハッシュを返します。

構文

SHA256('string')

パラメーター

パラメーター必須説明
stringはいハッシュ化する文字列。

この例では、サンプルテーブルを作成し、行を挿入してから、列の値の SHA256 ハッシュをクエリします。

-- サンプルテーブルを作成します。
CREATE TABLE tb (id INT, name VARCHAR, address VARCHAR, PRIMARY KEY(id, name));

-- 行を挿入します。
UPSERT INTO tb (id, name, address) VALUES (1, 'jack', 'hz');

-- name 列の SHA256 ハッシュをクエリします。
SELECT sha256(name) AS sc FROM tb WHERE id = 1;

結果:

+------------------------------------------------------------------+
|                                sc                                |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+

MATCH

全文検索式と検索インデックスを使用して列の値を検索します。結果はデフォルトで関連度の降順にソートされます。

重要
  • MATCH には LindormTable 2.7.2 以降が必要です。アップグレードするには、「LindormTable のリリースノート」および「インスタンスのアップグレード」をご参照ください。

  • MATCH は検索インデックスでのみ機能します。MATCH 条件と検索インデックスの両方が存在する場合、システムは自動的に検索インデックスを使用します。

注意事項

  • インデックスが作成されていない列:システムはまず検索インデックスを介して行を取得し、次にインデックスが作成されていない列を 1 行ずつフィルター処理します。これにより、大規模なデータセットではパフォーマンスが低下する可能性があります。これを回避するには、ADD COLUMN 文を使用して関連する列を検索インデックスに追加します。

  • プライマリテーブルとセカンダリインデックス:MATCH はプライマリテーブルまたはセカンダリインデックスではサポートされていません。これらについては、代わりにあいまいクエリに LIKE を使用してください。あいまいクエリは、トークン化されたクエリよりもパフォーマンスが低くなります。

  • MATCH と LIKE の組み合わせ:同じクエリで両方を使用する場合は、検索インデックスで関連する列をトークン化された列として設定します。

構文

MATCH (column_identifiers) AGAINST (search_expr)

MATCH は SELECT 文の WHERE 句でのみ使用できます。

パラメーター

パラメーター必須説明
column_identifiersはい検索する 1 つ以上の列名 (カンマ区切り)。複数の列が指定された場合、それらの値が結合されて一緒に照合されます。指定されたすべての列に対して検索インデックスが存在し、単語分割用にアナライザーが設定されている必要があります。詳細については、「検索インデックス機能の有効化」および「CREATE INDEX」をご参照ください。
search_exprはい一致ルールを定義する文字列定数。下記の「一致ルールの構文」をご参照ください。

一致ルールの構文

一致ルールは、スペースで区切られた 1 つ以上の条件です。各条件は次のいずれかです:

  • 単一の単語 — その単語を含む行に一致します。例:hello

  • 引用符で囲まれたフレーズ — 単語分割なしで、その正確なフレーズを含む行に一致します。例:"hello world"

  • 括弧で囲まれたサブルール — 囲まれたルールを満たす行に一致します。例:(another "hello world")

条件の前に記号を付けると、その動作が変わります:

記号意味
+条件を満たす必要があります (AND)
-条件を満たしてはなりません (NOT)
*(なし)*条件はオプションですが、一致する行のランクが高くなります

以下の例では、このサンプルテーブルを使用します:

-- サンプルテーブルを作成します。
CREATE TABLE tb (id INT, c1 VARCHAR, PRIMARY KEY(id));

-- 検索インデックスを作成します。この文を実行する前に、検索インデックス機能を有効にしてください。
CREATE INDEX idx USING SEARCH ON tb (c1(type=text));

-- 行を挿入します。
UPSERT INTO tb (id, c1) VALUES (1, 'hello');
UPSERT INTO tb (id, c1) VALUES (2, 'world');
UPSERT INTO tb (id, c1) VALUES (3, 'hello world');
UPSERT INTO tb (id, c1) VALUES (4, 'hello my world');
UPSERT INTO tb (id, c1) VALUES (5, 'hello you');
UPSERT INTO tb (id, c1) VALUES (6, 'hello you and me');
UPSERT INTO tb (id, c1) VALUES (7, 'you and me');

例 1: c1hello または world (あるいは両方) が含まれる行を返します。両方の term に一致する行のランクが高くなります。

SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello world');

結果:

+----+------------------+
| id |        c1        |
+----+------------------+
| 3  | hello world      |
| 2  | world            |
| 4  | hello my world   |
| 5  | hello you        |
| 1  | hello            |
| 6  | hello you and me |
+----+------------------+

例 2: c1world を含み、オプションで hello を含む行を返します。両方の term を持つ行のランクが高くなります。

SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello +world');

結果:

+----+----------------+
| id |       c1       |
+----+----------------+
| 3  | hello world    |
| 2  | world          |
| 4  | hello my world |
+----+----------------+

例 3: c1world を含むが hello を含まない行を返します。

SELECT * FROM tb WHERE MATCH (c1) AGAINST ('-hello +world');

結果:

+----+-------+
| id |  c1   |
+----+-------+
| 2  | world |
+----+-------+

例 4: c1 が正確なフレーズ hello world を含む行を返します。

SELECT * FROM tb WHERE MATCH (c1) AGAINST ('"hello world"');

結果:

+----+-------------+
| id |     c1      |
+----+-------------+
| 3  | hello world |
+----+-------------+

例 5: c1hello を含み、かつ you または me の少なくとも 1 つを含む行を返します。

SELECT * FROM tb WHERE MATCH (c1) AGAINST ('+hello +(you me)');

結果:

+----+------------------+
| id |        c1        |
+----+------------------+
| 6  | hello you and me |
| 5  | hello you        |
+----+------------------+