SQLite関数の使い方を徹底解説!文字列・数値・日付処理の基本と応用

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には直接 CEILFLOOR はありませんが、以下のように代用できます。

-- 切り上げ(整数部分に+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だけでかなり複雑な処理ができるようになります。
データをより効率的に扱いたい方は、ぜひ今回紹介した関数を活用してみてください。

タイトルとURLをコピーしました