SQLite教程(六):表達式詳解
更新時間:2015年05月04日 16:32:54 投稿:junjie
這篇文章主要介紹了SQLite教程(六):表達式詳解,本文講解了常用表達式、條件表達式、轉(zhuǎn)換表達式等內(nèi)容,需要的朋友可以參考下
一、常用表達式:
和大多數(shù)關(guān)系型數(shù)據(jù)庫一樣,SQLite能夠很好的支持SQL標準中提供的表達式,其函數(shù)也與SQL標準保持一致,如:
復(fù)制代碼 代碼如下:
||
* / %
+ -
<< >> & |
< <= > >=
= == != <> IS IS NOT IN LIKE
AND
OR
~ NOT
在上面的表達式中,唯一需要說明的是"||",該表達式主要用于兩個字符串之間的連接,其返回值為連接后的字符串,即便該操作符兩邊的操作數(shù)為非字符串類型,在執(zhí)行該表達式之前都需要被提前轉(zhuǎn)換為字符串類型,之后再進行連接。
二、條件表達式:
該表達式的語法規(guī)則如下:
復(fù)制代碼 代碼如下:
1). CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END
2). CASE WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 END
對于第一種情況,條件表達式x只需計算一次,然后分別和WHEN關(guān)鍵字后的條件逐一進行比較,直到找到相等的條件,其比較規(guī)則等價于等號(=)表達式。如果找到匹配的條件,則返回其后THEN關(guān)鍵字所指向的值,如果沒有找到任何匹配,則返回ELSE關(guān)鍵字之后的值,如果不存在ELSE分支,則返回NULL。對于第二種情況,和第一種情況相比,唯一的差別就是表達式x可能被多次執(zhí)行,比如第一個WHEN條件不匹配,則繼續(xù)計算后面的WHEN條件,其它規(guī)則均與第一種完全相同。最后需要說明的是,以上兩種形式的CASE表達式均遵守短路原則,即第一個表達式的條件一旦匹配,其后所有的WHEN表達式均不會再被執(zhí)行或比較。
三、轉(zhuǎn)換表達式:
該表達式的語法規(guī)則如下:
復(fù)制代碼 代碼如下:
CAST(expr AS target_type)
該表達式會將參數(shù)expr轉(zhuǎn)換為target_type類型,具體的轉(zhuǎn)換規(guī)則見如下列表:
| 目標類型 | 轉(zhuǎn)換規(guī)則描述 |
| TEXT | 如果轉(zhuǎn)換INTEGER或REAL類型的值到TEXT類型直接轉(zhuǎn)換即可,就像C/C++接口函數(shù)sqlite3_snprintf所完成的工作。 |
| REAL | 如果轉(zhuǎn)換TEXT類型的值到REAL類型,在該文本的最前部,將可以轉(zhuǎn)換為實數(shù)的文本轉(zhuǎn)換為相應(yīng)的實數(shù),其余部分忽略。其中該文本值的前導(dǎo)零亦將被全部忽略。如果該文本值沒有任何字符可以轉(zhuǎn)換為實數(shù),CAST表達式的轉(zhuǎn)換結(jié)果為0.0。 |
| INTEGER | 如果轉(zhuǎn)換TEXT類型的值到INTEGER類型,在該文本的最前部,將可以轉(zhuǎn)換為整數(shù)的文本轉(zhuǎn)換為相應(yīng)的整數(shù),其余部分忽略。其中該文本值的前導(dǎo)零亦將被全部忽略。如果該文本值沒有任何字符可以轉(zhuǎn)換為整數(shù),CAST表達式的轉(zhuǎn)換結(jié)果為0。 如果轉(zhuǎn)換將一個實數(shù)值轉(zhuǎn)換為INTEGER類型,則直接截斷實數(shù)小數(shù)部分。如果實數(shù)過大,則返回最大的負整數(shù):-9223372036854775808。 |
| NUMERIC | 如果轉(zhuǎn)換文本值到NUMERIC類型,則先將該值強制轉(zhuǎn)換為REAL類型,只有在將REAL轉(zhuǎn)換為INTEGER不會導(dǎo)致數(shù)據(jù)信息丟失以及完全可逆的情況下,SQLite才會進一步將其轉(zhuǎn)換為INTEGER類型。 |
最后需要說明的是,如果expr為NULL,則轉(zhuǎn)換的結(jié)果也為NULL。
相關(guān)文章
sqlite循環(huán)批量插入數(shù)據(jù)采用批處理文件實現(xiàn)
需要在sqlite數(shù)據(jù)庫中插入大量測試數(shù)據(jù),需要通過一個批處理文件來循環(huán)調(diào)用插入sqlite語句,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04
SQLite教程(五):數(shù)據(jù)庫和事務(wù)
這篇文章主要介紹了SQLite教程(五):數(shù)據(jù)庫和事務(wù),本文講解了Attach數(shù)據(jù)庫、Detach數(shù)據(jù)庫、事務(wù)等內(nèi)容,需要的朋友可以參考下2015-05-05

