# クエリの実行で使用できる関数

仮想テーブルのクエリ設定で、SQLite3が提供する関数を利用できます。

クエリ内で使用できる関数は「表3.2 関数一覧」を参照してください。

表3.2 関数一覧

【Aggregate Function（集合関数）】

関数名 | 用途 | 備考
--- | --- | ---
avg(X) | 指定されているカラムの平均を返します。 | 数字文字以外は0として扱う。 値なしは比較対象外となりそれを除く行で割った値を返却する。
count(*) | テーブルの行数を返します。 |
count(X) | 指定したカラムのNULLでない行数を返します。 |
max(X) | 指定したカラムの最大値を返します。 | 数字文字以外は0として扱います。
min(X) | 指定したカラムの最小値を返します。 | 数字文字以外は0として扱います。
sum(X) | 指定したカラムの合計値を返します。 | 数字文字以外は0として扱います。
total(X) | 指定したカラムの合計値を浮動小数点数で返します。 |
group_concat(X) group_concat(X,Y) | 指定したカラム（X）の値を連結して返します。 Yを指定すると、Xの値の区切り文字としてYが使用されます。 Yを省略すると、区切り文字としてカンマ（,）が使用されます。 |

【Date And Time Function（日付、時刻関数）】

関数名 | 用途 | 備考
--- | --- | ---
date(X,Y,Z, ...) | Xに指定された日付データをYYYY-MM-DD形式で返します。 Y、Zには指定した日付、時刻を加工するための指定ができます。 【日付、時刻の加算および減算】 NNN years NNN months NNN days NNN hours NNN minutes NNN.NNNN seconds ※NNN:+n、-nで加算、減算する日時を指定。 【最初の日、最後の日】 start of year start of month start of day 【指定した曜日の日】 weekday N ※N:曜日を表す数値を指定します。0が日曜、6が土曜になります。 【UNIXタイムスタンプの日】 unixepoch 【ローカルタイムゾーンでの表示】 localtime 【UTCタイムゾーンでの表示】 utc | 文字列タイプの場合は以下の書式のみ有効です。 YYYY-MM-DD YYYY-MM-DD HH:MI YYYY-MM-DD HH:MI:SS YYYY-MM-DD HH:MI:SS.SSS 日付タイプの場合は内部でYYYY-MM-DD HH:MI:SSに変換します。有効な書式は「「日付タイプ」を参照。
time(X,Y,Z, ...) | Xに指定された時刻データをHH:MM:SS形式で返します。 Y、Zに関してはdate関数と同様。 |
datetime(X,Y,Z,...) | Xに指定された日付および時刻データをYYYY-MM-DD HH:MM:SS形式で返します。 Y、Zに関してはdate関数と同様。 |
strftime(X,Y,Z,...) | Yに指定された日付および時刻データをXに指定された形式で返します。 Y、Zに関してはdate関数と同様。 |

【Core Function（コア関数）】

関数名 | 用途 | 備考
--- | --- | ---
abs(x) | 数値の絶対値を返します。 |
coalesce(X,Y,...) | 指定した2つ以上のカラムで最初のNULL以外のカラムを返します。 |
glob(X,Y) | YがXで指定したパターンにマッチすれば1を返します。しない場合は0を返します。 |
ifnull(X,Y) | 指定した2つのカラムで最初のNULL以外のカラムを返します。 |
hex(X) | BLOB型の値を16進表示で返します。 |
like(X,Y) | YがXで指定したパターンにマッチすれば1を返します。しない場合は0を返します。 | 大文字と小文字の区別はしません
like(X,Y,Z) | YがXで指定したパターンにZを除き、マッチすれば1を返します。しない場合は0を返します。 |
lower(X) | 引数に指定した文字列を小文字に変換した値を返します。 |
upper(X) | 引数に指定した文字列を大文字に変換した値を返します。 |
ltrim(X) | 文字列（X）の先頭から半角スペースを削除した値を返します。 |
ltrim(X,Y) | 文字列（X）の先頭から削除対象文字（Y）を削除した値を返します。 |
round(X,Y) | 数値（X）の小数点以下の桁数（Y）で四捨五入した結果を返します。例えば、Yに2を指定した場合は、小数点第3位を四捨五入します。 |
rtrim(X) | 文字列（X）の最後から半角スペースを削除した値を返します。 |
rtrim(X,Y) | 文字列（X）の最後から削除対象文字（Y）を削除した値を返します。 |
substr(X,Y,Z) | 文字列(X)から部分的に文字列を取得します。開始位置(Y)で指定した位置から文字数(Z)だけ取得します。 |
trim(X) | 文字列（X）の両側の半角スペースを削除した値を返します。 |
trim(X,Y) | 文字列（X）から指定の文字（Y）を削除した値を返します。 |
max(X,Y,...) | 指定された引数の最大値を返します。 |
min(X,Y,...) | 指定された引数の最小値を返します。 |
nullif(X,Y) | XとYを比較し、同じ値の場合はNULLを返し、異なっていればXを返します。 |
quote(X) | シングルクォーテーションで囲んだ値を返します。 | 数値タイプが指定された場合はそのまま返却します。 値に「'（シングルクォーテーション）」があった場合は「''（シングルクォーテーション２つ）」に変換され返却します。
random() | 乱数を発生させ、その値を返します。 |
replace(X,Y,Z) | 文字列（X）の指定した文字（Y）を指定文字（Z）に置換します。 |

注意

こちらに記載のない関数については動作は保証しません。

表3.3 演算子

演算子 | 使用方法 | 説明
--- | --- | ---
+ | A+B | AにBを加算
- | A-B | AからBを減算
* | A*B | AとBを乗算
/ | A/B | AをBで除算
% | A%B | AをBで除算した余り

= 備考 =

入力ファイル、マッチングファイル、変数などの参照型（$INUMや$INAME）を関数内に利用し、さらにその値に特定文字列を結合し評価を行う場合「||（パイプ）」を使用し文字列結合を行ってください。

例）like(X,Y)関数にて%を使用したあいまい検索を行う場合

    　select [col1] from [vt] where like('%'||'ABC'||'%',[col1])