7.16.30. string_truncate#
Added in version 16.0.9.
7.16.30.1. 概要#
string_truncateは、文字列を指定された文字数以下に切り詰めます。文字列が切り詰められた場合、残された文字の末尾を省略記号に置き換えます。その結果、省略記号を含めてlength文字の長さになります。これはRuby on RailsのString#truncateと同様の動作です。
この関数を有効にするには、以下のコマンドでfunctions/stringプラグインを登録します:
plugin_register functions/string
7.16.30.2. 構文#
string_truncateは2つから3つの引数を指定できます。
string_truncate(target, length[, options])
optionsには以下のキーを指定します。すべてのキー・値のペアは省略可能です:
{
"omission": omission
}
7.16.30.3. 使い方#
使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。
サンプルスキーマ:
実行例:
plugin_register functions/string
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Memos TABLE_HASH_KEY ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
サンプルデータ:
実行例:
load --table Memos
[
{"_key": "Groonga is a full text search engine"}
]
# [[0,1337566253.89858,0.000355720520019531],1]
以下は簡単な使用例です。文字列が指定されたlengthより長いため、切り詰められ"..."が追加されて、結果として15文字になります。
実行例:
select Memos \
--output_columns '_key, string_truncate(_key, 15)'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "string_truncate",
# null
# ]
# ],
# [
# "Groonga is a full text search engine",
# "Groonga is a..."
# ]
# ]
# ]
# ]
文字列の長さがlength以下である場合、省略記号を付けずにそのまま返されます。
実行例:
select Memos \
--output_columns '_key, string_truncate(_key, 100)'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "string_truncate",
# null
# ]
# ],
# [
# "Groonga is a full text search engine",
# "Groonga is a full text search engine"
# ]
# ]
# ]
# ]
次の例では、optionsでomissionを指定しています。
実行例:
select Memos \
--output_columns '_key, string_truncate(_key, 15, { "omission" : "***" })'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "string_truncate",
# null
# ]
# ],
# [
# "Groonga is a full text search engine",
# "Groonga is a***"
# ]
# ]
# ]
# ]
lengthがomissionの文字数よりも小さい状態で切り詰められた場合、omissionの文字数がlengthより多くても、結果はomissionのみとなります。
実行例:
select Memos \
--output_columns '_key, string_truncate(_key, 2)'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_key",
# "ShortText"
# ],
# [
# "string_truncate",
# null
# ]
# ],
# [
# "Groonga is a full text search engine",
# "..."
# ]
# ]
# ]
# ]
カラムの代わりに文字列リテラルを指定することもできます。
実行例:
select Memos \
--output_columns 'string_truncate("Groonga is a fast fulltext search engine", 15)'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "string_truncate",
# null
# ]
# ],
# [
# "Groonga is a..."
# ]
# ]
# ]
# ]
7.16.30.4. 引数#
7.16.30.4.1. 必須引数#
7.16.30.4.1.1. target#
対象となる文字列または文字列型カラムを指定します。
7.16.30.4.1.2. length#
切り詰めが発生した場合のomissionの文字数を含め、結果の最大文字数を指定します。targetの文字数がlength以下である場合、targetはそのまま返されます。
targetの長さがlengthより長い場合、string_truncateはtargetの先頭から「length - omissionの文字数」分を切り出し、末尾にomissionを追加します。omissionがlengthより長い場合やlengthが負の場合は、omissionのみになります。
7.16.30.4.2. 省略可能引数#
7.16.30.4.2.1. options#
以下のキーを指定します。
omission切り詰められたことを示す文字列を指定します。
デフォルトは
"..."です。
7.16.30.5. 戻り値#
string_truncateはtargetを切り詰めた結果を返します。切り詰めが行われた場合、結果(保持された部分とomissionの合計)の長さはlength文字になります。ただし、omissionがlengthより長い場合やlengthが負の値の場合は、omissionのみになります。