親緣類型 | 描述 |
TEXT | 數(shù)值型數(shù)據(jù)在被插入之前,需要先被轉(zhuǎn)換為文本格式,之后再插入到目標(biāo)字段中。 |
NUMERIC | 當(dāng)文本數(shù)據(jù)被插入到親緣性為NUMERIC的字段中時(shí),如果轉(zhuǎn)換操作不會(huì)導(dǎo)致數(shù)據(jù)信息丟失以及完全可逆,那么SQLite就會(huì)將該文本數(shù)據(jù)轉(zhuǎn)換為INTEGER或REAL類型的數(shù)據(jù),如果轉(zhuǎn)換失敗,SQLite仍會(huì)以TEXT方式存儲(chǔ)該數(shù)據(jù)。對(duì)于NULL或BLOB類型的新數(shù)據(jù),SQLite將不做任何轉(zhuǎn)換,直接以NULL或BLOB的方式存儲(chǔ)該數(shù)據(jù)。需要額外說(shuō)明的是,對(duì)于浮點(diǎn)格式的常量文本,如"30000.0",如果該值可以轉(zhuǎn)換為INTEGER同時(shí)又不會(huì)丟失數(shù)值信息,那么SQLite就會(huì)將其轉(zhuǎn)換為INTEGER的存儲(chǔ)方式。 |
INTEGER | 對(duì)于親緣類型為INTEGER的字段,其規(guī)則等同于NUMERIC,唯一差別是在執(zhí)行CAST表達(dá)式時(shí)。 |
REAL | 其規(guī)則基本等同于NUMERIC,唯一的差別是不會(huì)將"30000.0"這樣的文本數(shù)據(jù)轉(zhuǎn)換為INTEGER存儲(chǔ)方式。 |
NONE | 不做任何的轉(zhuǎn)換,直接以該數(shù)據(jù)所屬的數(shù)據(jù)類型進(jìn)行存儲(chǔ)?! ?/td> |
1. 決定字段親緣性的規(guī)則:
字段的親緣性是根據(jù)該字段在聲明時(shí)被定義的類型來(lái)決定的,具體的規(guī)則可以參照以下列表。需要注意的是以下列表的順序,即如果某一字段類型同時(shí)符合兩種親緣性,那么排在前面的規(guī)則將先產(chǎn)生作用。
1). 如果類型字符串中包含"INT",那么該字段的親緣類型是INTEGER。
2). 如果類型字符串中包含"CHAR"、"CLOB"或"TEXT",那么該字段的親緣類型是TEXT,如VARCHAR。
3). 如果類型字符串中包含"BLOB",那么該字段的親緣類型是NONE。
4). 如果類型字符串中包含"REAL"、"FLOA"或"DOUB",那么該字段的親緣類型是REAL。
5). 其余情況下,字段的親緣類型為NUMERIC。
2. 具體示例:
聲明類型 | 親緣類型 | 應(yīng)用規(guī)則 |
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 |
INTEGER | 1 |
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB |
TEXT | 2 |
BLOB | NONE | 3 |
REAL DOUBLE DOUBLE PRECISION FLOAT |
REAL | 4 |
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME |
NUMERIC | 5 |
注:在SQLite中,類型VARCHAR(255)的長(zhǎng)度信息255沒(méi)有任何實(shí)際意義,僅僅是為了保證與其它數(shù)據(jù)庫(kù)的聲明一致性。
三、比較表達(dá)式:
在SQLite3中支持的比較表達(dá)式有:"=", "==", "", "=", ">", ">=", "!=", ">", "IN", "NOT IN", "BETWEEN", "IS" and "IS NOT"。
數(shù)據(jù)的比較結(jié)果主要依賴于操作數(shù)的存儲(chǔ)方式,其規(guī)則為:
1). 存儲(chǔ)方式為NULL的數(shù)值小于其它存儲(chǔ)類型的值。
2). 存儲(chǔ)方式為INTEGER和REAL的數(shù)值小于TEXT或BLOB類型的值,如果同為INTEGER或REAL,則基于數(shù)值規(guī)則進(jìn)行比較。
3). 存儲(chǔ)方式為TEXT的數(shù)值小于BLOB類型的值,如果同為TEXT,則基于文本規(guī)則(ASCII值)進(jìn)行比較。
4). 如果是兩個(gè)BLOB類型的數(shù)值進(jìn)行比較,其結(jié)果為C運(yùn)行時(shí)函數(shù)memcmp()的結(jié)果。
四、操作符:
所有的數(shù)學(xué)操作符(+, -, *, /, %, , >>, , and |)在執(zhí)行之前都會(huì)先將操作數(shù)轉(zhuǎn)換為NUMERIC存儲(chǔ)類型,即使在轉(zhuǎn)換過(guò)程中可能會(huì)造成數(shù)據(jù)信息的丟失。此外,如果其中一個(gè)操作數(shù)為NULL,那么它們的結(jié)果亦為NULL。在數(shù)學(xué)操作符中,如果其中一個(gè)操作數(shù)看上去并不像數(shù)值類型,那么它們結(jié)果為0或0.0。
標(biāo)簽:錦州 株洲 珠海 蚌埠 烏海 來(lái)賓 晉城 衡陽(yáng)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLite教程(七):數(shù)據(jù)類型詳解》,本文關(guān)鍵詞 SQLite,教程,七,數(shù)據(jù),類型,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。