以下SQL語句在SQLite的情況下做了什麼?自定義數據類型如何在SQLite中工作
CREATE TABLE foo(id INTEGER PRIMARY KEY, time STRFTIME);
注意,time
柱具有未在documentation列出的STRFTIME
類型。
我想,下面的INSERT
作品沒有任何錯誤
sqlite> INSERT INTO foo (time) VALUES('text');
sqlite> SELECT * FROM foo;
1|text
因爲這樣:
3.1。測定柱親和力
列的親和力是通過聲明的類型的 柱的根據按所示順序的以下規則確定,:
如果聲明類型包含字符串「INT 「那麼它被分配 INTEGER親和力。
如果列的聲明類型包含任何字符串「CHAR」, 「CLOB」或「TEXT」,那麼該列具有TEXT關聯。請注意, 類型的VARCHAR包含字符串「CHAR」,因此被指定爲TEXT 親和力。
如果某個列的聲明類型包含字符串「BLOB」,或者沒有指定類型,則該列具有親和性BLOB。
如果列的聲明類型包含任何字符串「REAL」, 「FLOA」或「DOUB」,則該列具有REAL關聯。
5.否則,親和力是NUMERIC。
和此:
與NUMERIC親和力可能包含使用所有五個 存儲類值的列。當文本數據插入NUMERIC列時,文本的存儲類將轉換爲INTEGER或REAL(優先級爲 ),如果此類轉換是無損和可逆的。對於TEXT和REAL存儲類之間的 轉換,SQLite認爲 的轉換是無損和可逆的,如果保留數字的前十位數。 如果無法將TEXT無損轉換爲INTEGER或REAL,則 值將使用TEXT存儲類存儲。沒有嘗試 向右轉換NULL或BLOB值
我是誰?