SQLite學習手冊

一、聚合函數:

?? ?SQLite中支持的聚合函數在很多其他的關系型數據庫中也同樣支持,因此我們這里將只是給出每個聚集函數的簡要說明,而不在給出更多的示例了。這里還需要進一步說明的是,對于所有聚合函數而言,distinct關鍵字可以作為函數參數字段的前置屬性,以便在進行計算時忽略到所有重復的字段值,如count(distinct x)。

函數說明
avg(x)該函數返回在同一組內參數字段的平均值。對于不能轉換為數字值的String和BLOB類型的字段值,如'HELLO',SQLite會將其視為0。avg函數的結果總是浮點型,唯一的例外是所有的字段值均為NULL,那樣該函數的結果也為NULL。
count(x|*)  count(x)函數返回在同一組內,x字段中值不等于NULL的行數。count(*)函數返回在同一組內的數據行數。
group_concat(x[,y])該函數返回一個字符串,該字符串將會連接所有非NULL的x值。該函數的y參數將作為每個x值之間的分隔符,如果在調用時忽略該參數,在連接時將使用缺省分隔符","。再有就是各個字符串之間的連接順序是不確定的。  
max(x)該函數返回同一組內的x字段的最大值,如果該字段的所有值均為NULL,該函數也返回NULL。
min(x)該函數返回同一組內的x字段的最小值,如果該字段的所有值均為NULL,該函數也返回NULL。
sum(x)該 函數返回同一組內的x字段值的總和,如果字段值均為NULL,該函數也返回NULL。如果所有的x字段值均為整型或者NULL,該函數返回整型值,否則就 返回浮點型數值。最后需要指出的是,如果所有的數據值均為整型,一旦結果超過上限時將會拋出"integer overflow"的異常。
total(x)該函數不屬于標準SQL,其功能和sum基本相同,只是計算結果比sum更為合理。比如當所有字段值均為NULL時,和sum不同的是,該函數返回0.0。再有就是該函數始終返回浮點型數值。該函數始終都不會拋出異常。


二、核心函數:

?? ?以下函數均為SQLite缺省提供的內置函數,其聲明和描述見如下列表:

函數說明
abs(X)該函數返回數值參數X的絕對值,如果X為NULL,則返回NULL,如果X為不能轉換成數值的字符串,則返回0,如果X值超出Integer的上限,則拋出"Integer Overflow"的異常。
changes()該函數返回最近執行的INSERT、UPDATE和DELETE語句所影響的數據行數。我們也可以通過執行C/C++函數sqlite3_changes()得到相同的結果。
coalesce(X,Y,...)  返回函數參數中第一個非NULL的參數,如果參數都是NULL,則返回NULL。該函數至少2個參數。
ifnull(X,Y)該函數等同于兩個參數的coalesce()函數,即返回第一個不為NULL的函數參數,如果兩個均為NULL,則返回NULL。
length(X)  如果參數X為字符串,則返回字符的數量,如果為數值,則返回該參數的字符串表示形式的長度,如果為NULL,則返回NULL。
lower(X)返回函數參數X的小寫形式,缺省情況下,該函數只能應用于ASCII字符。
ltrim(X[,Y])  如果沒有可選參數Y,該函數將移除參數X左側的所有空格符。如果有參數Y,則移除X左側的任意在Y中出現的字符。最后返回移除后的字符串。
max(X,Y,...)返回函數參數中的最大值,如果有任何一個參數為NULL,則返回NULL。
min(X,Y,...)返回函數參數中的最小值,如果有任何一個參數為NULL,則返回NULL。
nullif(X,Y)如果函數參數相同,返回NULL,否則返回第一個參數。  
random()  返回整型的偽隨機數。
replace(X,Y,Z)  將字符串類型的函數參數X中所有子字符串Y替換為字符串Z,最后返回替換后的字符串,源字符串X保持不變。
round(X[,Y])返回數值參數X被四舍五入到Y刻度的值,如果參數Y不存在,缺省參數值為0。  
rtrim(X[,Y])  如果沒有可選參數Y,該函數將移除參數X右側的所有空格符。如果有參數Y,則移除X右側的任意在Y中出現的字符。最后返回移除后的字符串。
substr(X,Y[,Z])返回函數參數X的子字符串,從第Y位開始(X中的第一個字符位置為1)截取Z長度的字符,如果忽略Z參數,則取第Y個字符后面的所有字符。如果Z的值為負數,則從第Y位開始,向左截取abs(Z)個字符。如果Y值為負數,則從X字符串的尾部開始計數到第abs(Y)的位置開始。 
total_changes()該函數返回自從該連接被打開時起,INSERT、UPDATE和DELETE語句總共影響的行數。我們也可以通過C/C++接口函數sqlite3_total_changes()得到相同的結果。
trim(x[,y])如果沒有可選參數Y,該函數將移除參數X兩側的所有空格符。如果有參數Y,則移除X兩側的任意在Y中出現的字符。最后返回移除后的字符串。?
upper(X)返回函數參數X的大寫形式,缺省情況下,該函數只能應用于ASCII字符。
typeof(X)返回函數參數數據類型的字符串表示形式,如"Integer、text、real、null"等。


三、日期和時間函數:

?? ?SQLite主要支持以下四種與日期和時間相關的函數,如:
?? ?1).?date(timestring, modifier, modifier, ...)
??? 2).?time(timestring, modifier, modifier, ...)
??? 3).?datetime(timestring, modifier, modifier, ...)
??? 4).?strftime(format, timestring, modifier, modifier, ...)
?? ?以上所有四個函數都接受一個時間字符串作為參數,其后再跟有0個或多個修改符。其中strftime()函數還接受一個格式字符串作為其第一個參數。strftime()和C運行時庫中的同名函數完全相同。至于其他三個函數,date函數的缺省格式為:"YYYY-MM-DD",time函數的缺省格式為:"HH:MM:SS",datetime函數的缺省格式為:"YYYY-MM-DD HH:MM:SS"。????
???1. strftime函數的格式信息:

格式說明
%dday of month: 00
%ffractional seconds: SS.SSS
%Hhour: 00-24
%jday of year: 001-366
%J?Julian day number
%mmonth: 01-12
%Mminute: 00-59
%sseconds since 1970-01-01
%Sseconds: 00-59
%wday of week 0-6 with Sunday==0
%Wweek of year: 00-53
%Yyear: 0000-9999
%%%

??? 需要額外指出的是,其余三個時間函數均可用strftime來表示,如:
?? ?date(...) ?? ??? ?strftime('%Y-%m-%d', ...)
?? ?time(...) ?? ??? ?strftime('%H:%M:%S', ...)
??? datetime(...)?? strftime('%Y-%m-%d %H:%M:%S', ...)?
?? ?
?? ?2. 時間字符串的格式:
??? 見如下列表:
?? ?1). YYYY-MM-DD
??? 2). YYYY-MM-DD HH:MM
??? 3). YYYY-MM-DD HH:MM:SS
??? 4). YYYY-MM-DD HH:MM:SS.SSS
??? 5). HH:MM
??? 6). HH:MM:SS
??? 7). HH:MM:SS.SSS
??? 8). now
????5)7)中只是包含了時間部分,SQLite將假設日期為2000-01-018)表示當前時間。
????
?? 3. 修改符:
??? 見如下列表:
?? ?1). NNN days
?? ?2). NNN hours
?? ?3). NNN minutes
?? ?4). NNN.NNNN seconds
?? ?5). NNN months
?? ?6). NNN years
?? ?7). start of month
?? ?8). start of year
?? ?9). start of day
?? ?10).weekday N ????
?? ?1)6)將只是簡單的加減指定數量的日期或時間值,如果NNN的值為負數,則減,否則加。7)9)則將時間串中的指定日期部分設置到當前月、年或日的開始。10)則將日期前進到下一個星期N,其中星期日為0。注:修改符的順序極為重要,SQLite將會按照從左到右的順序依次執行修改符。
?? ?
?? ?4. 示例:
?? ?--返回當前日期。
?? ?sqlite> SELECT date('now'); ?
?? ?2012-01-15?? ?
?? ?--返回當前月的最后一天。
?? ?sqlite> SELECT date('now','start of month','1 month','-1 day');
?? ?2012-01-31
?? ?--返回從1970-01-01 00:00:00到當前時間所流經的秒數。
?? ?sqlite> SELECT strftime('%s','now');
?? ?1326641166?? ?
?? ?--返回當前年中10月份的第一個星期二是日期。
?? ?sqlite> SELECT date('now','start of year','+9 months','weekday 2');
?? ?2012-10-02 ?

轉載于:https://www.cnblogs.com/huangzhenwei/p/5957994.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394888.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle全局索引 效率,關于插入,全局索引和局部索引的情況,那種效率高

分區表上的索引表可以按range,hash,list分區,表分區后,其上的索引和普通表上的索引有所不同,oracle對于分區表上的索引分為2類,即局部索引和全局索引,下面分別對這2種索引的特點和局限性做個總結…

python excelwriter保存路徑_Python和Excel 終于可以互通了!!

點擊“開發者技術前線”,選擇“星標🔝”在看|星標|留言, 真愛作者:小天真_5eed 鏈接:https://www.jianshu.com/p/6ecf414f3372今天為大家分享一篇使用python將大量數據導出到Excel中的技巧心得,可以讓Python和Excel…

nodejs 調用微服務器_無服務器NodeJS:構建下一個微服務的快速,廉價方法

nodejs 調用微服務器by Filipe Tavares由Filipe Tavares 無服務器NodeJS:構建下一個微服務的快速,廉價方法 (Serverless NodeJS: the fast, inexpensive way to build your next microservice) I love Node.js. I’ve re-discovered Javascript through…

(藍橋杯)2018JAVA B組 日志分析

日志統計 小明維護著一個程序員論壇。現在他收集了一份"點贊"日志,日志共有N行。其中每一行的格式是: ts id 表示在ts時刻編號id的帖子收到一個"贊"。 現在小明想統計有哪些帖子曾經是"熱帖"。如果一個帖子曾在任意一個長…

MySQL 導出數據

2019獨角獸企業重金招聘Python工程師標準>>> 1、導出整個數據庫 mysqldump -u 用戶名 -p 數據庫名 > 存放位置比如: mysqldump -u root -p project > c:/a.sql 2.導出一個表的結構,并且帶表中的數據 mysqldump -u 用戶名 -p 數據庫名 …

哎 心好累

雨天后的周六還要上班,避開了所有上班的交通方式,沒有比這更需要車的時候,哎,感覺心好累 好好努力買車吧,覺得再這樣只能是徒勞了。 困得和傻逼一樣 單片機又要換型號,后面一堆事兒,哎 再見-dsp…

Abbey加入了FreeCodeCamp團隊,擔任編輯

by Quincy Larson昆西拉爾森(Quincy Larson) Abbey加入了FreeCodeCamp團隊,擔任編輯 (Abbey is joining the freeCodeCamp team as an editor) Every article you’ve read here on the freeCodeCamp community Medium publication has been edited with care by a…

單片機STM8S測量電壓電路_單片機電路設計中的10個難點

單片機是嵌入式系統的核心元件,使用單片機的電路要復雜得多,但在更改和添加新功能時,帶有單片機的電路更加容易實現,這也正是電器設備使用單片機的原因。那么在單片機電路的設計中需要注意的難點有哪些?嵌入式ARM開發 …

oracle ebs 數據源,Oracle EBS環境下查找數據源(Form篇)

關于在Oracle EBS環境下如何查找數據源的文章幾年前就已經開始整理,但是其中關于OAF方面的一直沒有整理,導致這份文檔一直殘缺不全,有很多次同事都向我索要相關文檔都未能如愿以償,新的一屆培訓工作再次啟動,為了自己也…

net-speeder

有的同學反映自己的***速度慢,丟包率高。這其實和你的網絡服務提供商有關。據我所知一部分上海電信的同學就有這種問題。那么碰到了坑爹的網絡服務商,我們應該怎么辦呢? duangduang~~~~~~有請今天的主角:Net-Speeder登場&#xff…

linux 實用指令

通過init 來制定/切換不同的運行指令 查看linux 系統下,電腦的運行級別 vim /etc/inittab 如何找回丟失的root密碼? 進入到單用戶模式,然后修改root密碼 進入到單用戶模式,root不需要密碼也可以登錄 如果開機就是init 0 辦法&…

Atitit.異步的實現模式attilax大總結

Atitit.異步的實現模式attilax大總結 1.1. 函數回調(包括的future模式)1 1.2. 事件機制( 包括定時器 listeners 1 1.3. 中斷機制1 1.4. 訂閱機制 發布/訂閱 又稱"觀察者模式"(observer pattern)。1 1.5. Promises對象1 1.6. 輪詢1 2. 實現級別…

區塊鏈開發指南_區塊鏈開發權威指南

區塊鏈開發指南by Haseeb Qureshi由Haseeb Qureshi 區塊鏈開發權威指南 (The authoritative guide to blockchain development) Cryptocurrencies, ICOs, magic internet money — it’s all so damn exciting, and you, the eager developer, want to get in on the madness.…

【BZOJ1831】[AHOI2008]逆序對(動態規劃)

【BZOJ1831】[AHOI2008]逆序對(動態規劃) 題面 BZOJ洛谷 題解 顯然填入的數拎出來是不降的。 那么就可以直接大力\(dp\)。 設\(f[i][j]\)表示當前填到了\(i\),上一個填的數是\(j\)的最小逆序對數。 隨便拿什么維護一下轉移就好了。 #include&…

chrome控制臺如何把vw顯示成px_【CSS】rem,em,px的區別和使用場景

前端潮咖點擊上面藍字,關注我們!關注關注前端潮咖,每日精選好文作者:大前端小菜鳥來源:cnblogs.com/hyns/p/12380944.html作rem布局原理深度理解(以及em/vw/vh)一、前言我們h5項目終端適配采用的是淘寶那套《Flexible實…

php7對象轉換成數組,php 如何把對象轉換成數組對象

php把對象轉換成數組對象的方法:首先打開相應的PHP代碼文件;然后通過“function array_to_object($arr){...}”方法把對象轉換成數組即可。本文操作環境:windows7系統、PHP7.1版,DELL G3電腦php-對象(object) 與 數組(array) 的轉…

python中的線程之semaphore信號量

semaphore是一個內置的計數器 每當調用acquire()時,內置計數器-1 每當調用release()時,內置計數器1 計數器不能小于0,當計數器為0時,acquire()將阻塞線程直到其他線程調用release()。 來看下面的代碼: import time imp…

用什么代碼可以改變鍵盤_為什么我改變了對代碼質量的看法

用什么代碼可以改變鍵盤by John Cobb約翰科布(John Cobb) 為什么我改變了對代碼質量的看法 (Why I changed the way I think about Code Quality) What do you think about when you think about code quality?當您考慮代碼質量時,您會怎么看? Is it …

建模:建模清單

ylbtech-建模:建模清單1.返回頂部 2.返回頂部3.返回頂部4.返回頂部5.返回頂部 6.返回頂部作者:ylbtech出處:http://ylbtech.cnblogs.com/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明&#xf…

獲得picker選項的當前年月值_如果你用OPPO手機!千萬記得開啟開發者選項,手機性能大幅度提升...

如果你用OPPO手機!千萬記得開啟開發者選項,手機性能大幅度提升用過OPPO手機的用戶都知道,手機使用1-2年都會出現卡頓的情況。這也是安卓手機的通病,但也有很多朋友手機使用3年也不會出現卡頓的現象,都是因為打開了手機…