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"
#       ]
#     ]
#   ]
# ]

次の例では、optionsomissionを指定しています。

実行例:

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***"
#       ]
#     ]
#   ]
# ]

lengthomissionの文字数よりも小さい状態で切り詰められた場合、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_truncatetargetの先頭から「length - omissionの文字数」分を切り出し、末尾にomissionを追加します。omissionlengthより長い場合やlengthが負の場合は、omissionのみになります。

7.16.30.4.2. 省略可能引数#

7.16.30.4.2.1. options#

以下のキーを指定します。

  • omission

    • 切り詰められたことを示す文字列を指定します。

    • デフォルトは"..."です。

7.16.30.5. 戻り値#

string_truncatetargetを切り詰めた結果を返します。切り詰めが行われた場合、結果(保持された部分とomissionの合計)の長さはlength文字になります。ただし、omissionlengthより長い場合やlengthが負の値の場合は、omissionのみになります。

7.16.30.6. 参考#