SQLele資料集
SQLiteの型 †
型を気にせず使えるのがSQLiteの特徴ですが、データ型は存在します。データの型およびカラムの型についてまとめました。
最新の情報(英語)はSQLite本家サイトにて入手できます。
データ型名 | 意味 |
---|
NULL | ヌル |
INTEGER | 符号付き整数値(最大8バイト) |
REAL | 浮動点小数(8バイト) |
TEXT | 文字列(UTF-8) |
BLOB | BLOBデータ |
データ型名 | 意味 |
---|
TEXT | 基本的にはNULL,TEXT,BLOBを格納。INTEGER,REALを格納した場合は、その数値をTEXTに変換してから格納。 |
NUMERIC | INTEGERかREALに変換できるならばそれに変換し、できない場合はTEXTとして保存。BLOBおよびNULLは変換されない。 |
INTEGER | REALをINTEGERに変換して格納する。その他はNUMERICと同じ。 |
REAL | INTEGERをREALへ変換して格納する。その他はNUMERICと同じ。 |
NONE | 型なし。データ格納時に変換されることがない。 |
実際にはカラムの型はあまり影響しないようです。例えば下に挙げるスクリプトではINTEGER型のカラムに実数を格納していますが、問題なく実数として取り出せます。
小数点以下が0のときのみ整数への変換が行われているようです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 実数をINTEGER型のカラムに格納したらどうなるか?
// HSP3.1 & SQLele1.14 & SQLite3.6.14 で動作確認済み
#include "sqlele.hsp"
v = 1.0, 1.3, 1.7, 2.0
sql_open ":memory:"
sql_q "CREATE TABLE [テーブル] (before REAL, after INTEGER)"
sql_q "BEGIN"
foreach v
sql_q "INSERT INTO [テーブル] VALUES (" + prm_f( v( cnt ) ) + "," + prm_f( v( cnt ) ) + ")"
loop
sql_q "COMMIT"
sql_q "SELECT * FROM [テーブル]"
repeat stat
mes sql_v(
"before" ) +
" -> " + sql_v(
"after" )
sql_next
loop
sql_close
stop