SQLiteは、軽量で扱いやすいデータベースとして多くのシステムやアプリに利用されています。
特に、組み込みアプリやWebアプリのバックエンドなどで活用されることが多く、その手軽さから個人開発でも人気です。
本記事では、SQLiteでよく使われる「文字列関数」「数値関数」「日付関数」について、具体例を交えて解説します。
これらの関数を活用することで、データの整形や計算、日付の操作が簡単にできるようになります。
SQLiteの関数をしっかりと理解して、より効率的なクエリ作成を目指しましょう。
文字列関数の使い方
SQLiteには、文字列操作に便利な関数が多数用意されています。以下では代表的なものを紹介します。
LENGTH関数:文字列の長さを取得する
SELECT LENGTH('SQLite') AS length;
結果:6
文字列のバイト数ではなく文字数を返します。マルチバイト文字にも対応しています。
UPPER / LOWER関数:大文字・小文字への変換
SELECT UPPER('sqlite') AS upper;
SELECT LOWER('SQLITE') AS lower;
結果:SQLITE
/ sqlite
検索条件の正規化やデータ整形で役立ちます。
SUBSTR関数:部分文字列の取得
SELECT SUBSTR('SQLiteDatabase', 7, 4) AS substring;
結果:Data
2番目の引数は開始位置(1から始まる)、3番目が文字数です。
REPLACE関数:文字列の置換
SELECT REPLACE('Hello, world!', 'world', 'SQLite') AS replaced;
結果:Hello, SQLite!
部分一致での文字列置換が可能です。
TRIM / LTRIM / RTRIM:空白・指定文字の削除
SELECT TRIM(' Hello ') AS trimmed;
SELECT LTRIM(' Hello') AS left_trimmed;
SELECT RTRIM('Hello ') AS right_trimmed;
すべての空白、または指定した文字を削除できます。
数値関数の使い方
SQLiteは数値演算にも対応しています。数値の計算や統計処理に使える関数を紹介します。
ABS関数:絶対値を取得
SELECT ABS(-15) AS abs_value;
結果:15
負の数を正の数に変換したいときに便利です。
ROUND関数:四捨五入
SELECT ROUND(3.14159, 2) AS rounded;
結果:3.14
第2引数で小数点以下の桁数を指定できます。
CEIL / FLOOR関数:切り上げ・切り捨て(代替方法)
SQLiteには直接 CEIL
や FLOOR
はありませんが、以下のように代用できます。
-- 切り上げ(整数部分に+1)
SELECT CAST(3.7 AS INT) + (3.7 > CAST(3.7 AS INT)) AS ceil;
-- 切り捨て
SELECT CAST(3.7 AS INT) AS floor;
整数変換と比較を用いることで近似的に処理可能です。
RANDOM関数:乱数の生成
SELECT RANDOM() AS rand;
結果はランダムな整数(64bit)になります。必要に応じて正規化して使いましょう。
SELECT ABS(RANDOM()) % 100 AS rand_0_to_99;
日付関数の使い方
SQLiteでは「datetime」「date」「time」関数を使って、日付や時刻の操作ができます。デフォルトではすべて文字列(YYYY-MM-DDなど)として扱われます。
DATE関数:日付の演算や取得
SELECT DATE('now') AS today;
SELECT DATE('now', '+7 days') AS next_week;
今日の日付や、未来・過去の日付を取得できます。
DATETIME関数:日時の取得と演算
SELECT DATETIME('now') AS current_datetime;
SELECT DATETIME('now', '-1 day', '+3 hours') AS adjusted;
複数の演算を組み合わせることで、柔軟な日時操作が可能です。
STRFTIME関数:フォーマット付きで日時を取得
SELECT STRFTIME('%Y/%m/%d %H:%M:%S', 'now') AS formatted;
日時を任意の形式に整形して表示できます。%Y
=年、%m
=月、%d
=日などの指定が可能です。
JULIANDAY関数:日数の差分を計算
SELECT JULIANDAY('2025-01-01') - JULIANDAY('2024-01-01') AS days_diff;
結果:366
(うるう年のため)
日付間の差分を簡単に求められます。
関数を組み合わせて使う例
複数の関数を組み合わせて使うことで、より実用的な処理が可能です。たとえば、以下のようにすれば「今日から何日後にイベントがあるか」を調べることができます。
SELECT
'2025-05-01' AS event_date,
DATE('now') AS today,
JULIANDAY('2025-05-01') - JULIANDAY('now') AS days_until;
また、文字列と日付を組み合わせて、ログに記録するデータの整形も可能です。
SELECT
'ログ作成日: ' || STRFTIME('%Y年%m月%d日', 'now') AS log_message;
まとめ
SQLiteの文字列・数値・日付関数は、軽量ながら強力な機能を持っています。
特に「STRFTIME」「JULIANDAY」「REPLACE」などの関数を使いこなすことで、より柔軟で洗練されたSQLクエリを書くことができます。
関数の組み合わせに慣れてくると、SQLだけでかなり複雑な処理ができるようになります。
データをより効率的に扱いたい方は、ぜひ今回紹介した関数を活用してみてください。