SQLite 函数大全
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
SQLite 函數(shù)大全
發(fā)表回復(fù)
abs(X)?返回參數(shù)X的絕對值。?
coalesce(X,Y,…)?返回第一個(gè)非空參數(shù)的副本。若所有的參數(shù)均為NULL,返回NULL。至少2個(gè)參數(shù)。?
glob(X,Y)?用于實(shí)現(xiàn)SQLite的?“X?GLOB?Y”語法。可使用?sqlite3_create_function()?重載該函數(shù)從而改變GLOB運(yùn)算符的功能。?
ifnull(X,Y)?返回第一個(gè)非空參數(shù)的副本。?若兩個(gè)參數(shù)均為NULL,返回NULL。與上面的?coalesce()類似。?
last_insert_rowid()?返回當(dāng)前數(shù)據(jù)庫連接最后插入行的ROWID。sqlite_last_insert_rowid()?API函數(shù)同樣可用于得到該值。?
length(X)?返回X的長度,以字符計(jì)。如果SQLite被配置為支持UTF-8,則返回UTF-8字符數(shù)而不是字節(jié)數(shù)。?
like(X,Y?[,Z])?用于實(shí)現(xiàn)SQL語法“X?LIKE?Y?[ESCAPE?Z]“.若使用可選的ESCAPE子句,則函數(shù)被賦予三個(gè)參數(shù),否則只有兩個(gè)。可使用sqlite3_create_function()?重載該函數(shù)從而改變LIKE運(yùn)算符的功能。?注意同時(shí)重載like()的兩參數(shù)和三參數(shù)版本,否則在使用/不使用?ESCAPE子句時(shí),LIKE運(yùn)算符的實(shí)現(xiàn)可能使用的是不同的代碼。?
lower(X)?返回X字符串的所有字符小寫化版本。這一轉(zhuǎn)換使用C語言庫的tolower()函數(shù),對UTF-8字符不能提供好的支持。?
max(X,Y,…)?返回最大值。參數(shù)可以不僅僅為數(shù)字,可以為字符串。大小順序由常用的排序法則決定。注意,max()在有2個(gè)或更多參數(shù)時(shí)為簡單函數(shù),但當(dāng)僅給出一個(gè)參數(shù)時(shí)它變?yōu)榫奂瘮?shù)。?
min(X,Y,…)?返回最小值。與max()類似。?
nullif(X,Y)?當(dāng)兩參數(shù)不同時(shí)返回X,否則返回NULL.?
quote(X)?返回參數(shù)的適于插入其它SQL語句中的值。字符串會被添加單引號,在內(nèi)部的引號前會加入逃逸符號。?BLOB被編碼為十六進(jìn)制文本。當(dāng)前的VACUUM使用這一函數(shù)實(shí)現(xiàn)。在使用觸發(fā)器實(shí)現(xiàn)撤銷/重做功能時(shí)這一函數(shù)也很有用。?
random(*)?返回介于-2147483648和?+2147483647之間的隨機(jī)整數(shù)。?
round(X)
round(X,Y)?將X四舍五入,保留小數(shù)點(diǎn)后Y位。若忽略Y參數(shù),則默認(rèn)其為0。?
soundex(X)?計(jì)算字符串X的soundex編碼。參數(shù)為NULL時(shí)返回字符串“?000″.缺省的SQLite是不支持該函數(shù)的,當(dāng)編譯時(shí)選項(xiàng)?-DSQLITE_SOUNDEX=1?時(shí)該函數(shù)才可用。?
sqlite_version(*)?返回所運(yùn)行的SQLite庫的版本號字符串。如?“2.8.0″。?
substr(X,Y,Z)?返回輸入字符串X中以第Y個(gè)字符開始,Z個(gè)字符長的子串。?X最左端的字符序號為1。若Y為負(fù),則從右至左數(shù)起。若SQLite配置支持UTF-8,則“字符”代表的是UTF-8字符而非字節(jié)。?
typeof(X)?返回表達(dá)式X的類型。返回值可能為“null”,?”integer”,?”real”,?”text”,?以及?“blob”.?SQLite的類型處理參見SQLite3的數(shù)據(jù)類型.?
upper(X)?返回X字符串的所有字符大寫化版本。這一轉(zhuǎn)換使用C語言庫的toupper()函數(shù),對UTF-8字符不能提供好的支持。?
以下是缺省可用的聚集函數(shù)列表。可以使用C語言寫出其它的聚集函數(shù)然后使用sqlite3_create_function()?API函數(shù)添加到數(shù)據(jù)庫引擎中。
在單參數(shù)聚集函數(shù)中,參數(shù)可以加前綴DISTINCT。這時(shí)重復(fù)參數(shù)會被過濾掉,然后才穿入到函數(shù)中。例如,函數(shù)“count(distinct?X)”返回字段X的不重復(fù)非空值的個(gè)數(shù),而不是字段X的全部非空值。?
avg(X)?返回一組中非空的X的平均值。非數(shù)字值作0處理。avg()的結(jié)果總是一個(gè)浮點(diǎn)數(shù),即使所有的輸入變量都是整數(shù)。?
count(X)
count(*)?返回一組中X是非空值的次數(shù)的第一種形式。第二種形式(不帶參數(shù))返回該組中的行數(shù)。?
max(X)?返回一組中的最大值。大小由常用排序法決定。?
min(X)?返回一組中最小的非空值。大小由常用排序法決定。僅在所有值為空時(shí)返回NULL。?
sum(X)
total(X)?返回一組中所有非空值的數(shù)字和。若沒有非空行,sum()返回NULL而total()返回0.0.?NULL通常情況下并不是對于“沒有行”的和的一個(gè)有意義的結(jié)果,但SQL標(biāo)準(zhǔn)如此要求,且大部分其它SQL數(shù)據(jù)庫引擎這樣定義sum(),所以SQLite?也如此定義以保證兼容。我們提供非標(biāo)準(zhǔn)的total()函數(shù)作為解決該SQL語言設(shè)計(jì)問題的一個(gè)簡易方法。?
total()的返回值式中為浮點(diǎn)數(shù)。sum()可以為整數(shù),當(dāng)所有非空輸入均為整數(shù)時(shí),和是精確的。?若sum()的任意一個(gè)輸入既非整數(shù)也非NULL或計(jì)算中產(chǎn)生整數(shù)類型的溢出時(shí),sum()返回接近真和的浮點(diǎn)數(shù)。
SQLite的日期時(shí)間函數(shù)
1.date(日期時(shí)間字符串,?修正符,?修正符,?……)
2.time(日期時(shí)間字符串,?修正符,?修正符,?……)
3.datetime(日期時(shí)間字符串,?修正符,?修正符,?……)
4.julianday(日期時(shí)間字符串,?修正符,?修正符,?……)
5.strftime(日期時(shí)間格式,?日期時(shí)間字符串,?修正符,?修正符,?……)
????上述五個(gè)函數(shù)需要一個(gè)日期時(shí)間字符串做參數(shù),后面可以跟零到多個(gè)修正符參數(shù)。而?strftime()?函數(shù)還需要一個(gè)日期時(shí)間格式字符串做第一個(gè)參數(shù)。
1.date()?函數(shù)返回一個(gè)以?“YYYY-MM-DD”?為格式的日期;
2.time()?函數(shù)返回一個(gè)以?“YYYY-MM-DD?HH:MM:SS”?為格式的日期時(shí)間;
3.julianday()?函數(shù)返回一個(gè)天數(shù),從格林威治時(shí)間公元前4714年11月24號開始算起;
4.strftime()?函數(shù)返回一個(gè)經(jīng)過格式話的日期時(shí)間,它可以用下面的符號對日期和時(shí)間進(jìn)行格式化:
%d??一月中的第幾天?01-31
%f??小數(shù)形式的秒,SS.SSSS
%H??小時(shí)?00-24
%j??一年中的第幾天?01-366
%J??Julian?Day?Numbers
%m??月份?01-12
%M??分鐘?00-59
%s??從?1970-01-01日開始計(jì)算的秒數(shù)
%S??秒?00-59
%w??星期,0-6,0是星期天
%W??一年中的第幾周?00-53
%Y??年份?0000-9999
%%??%?百分號
其他四個(gè)函數(shù)都可以用?strftime()?函數(shù)來表示:
1.date(…)?????????->???strftime(“%Y-%m-%d”,…)
2.time(…)?????????->???strftime(“%H:%M:%S”,…)
3.datetime(…)?????->???strftime(“%Y-%m-%d?%H:%M:%S”,…)
4.julianday(…)????->???strftime(“%J”,…)
日期時(shí)間字符串,可以用以下幾種格式:
YYYY-MM-DD
YYYY-MM-DD?HH:MM
YYYY-MM-DD?HH:MM:SS
YYYY-MM-DD?HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDD.DDDD
在第五種到第七種格式中的“T”是一個(gè)分割日期和時(shí)間的字符;第八種到第十種格式只代表2000-01-01日的時(shí)間,第十一種格式的’now’表示返回一個(gè)當(dāng)前的日期和時(shí)間,使用格林威治時(shí)間(UTC);第十二種格式表示一個(gè)?Julian?Day?Numbers。
修正符,日期和時(shí)間可以使用下面的修正符來更改日期或時(shí)間:
NNN?days
NNN?hours
NNN?minutes
NNN.NNNN?seconds
NNN?months
NNN?years
start?of?month
start?of?year
start?of?week
start?of?day
weekday?N
unixepoch
localtime
utc
前六個(gè)修正符就是簡單的增加指定數(shù)值的時(shí)間和日期;第七到第十個(gè)修正符表示返回當(dāng)前日期的開始;第十一個(gè)修正符表示返回下一個(gè)星期是N的日期和時(shí)間;第十二個(gè)修正符表示返回從1970-01-01開始算起的秒數(shù);第十三個(gè)修正符表示返回本地時(shí)間。
下面舉一些例子:
計(jì)算機(jī)當(dāng)前時(shí)間
SELECT?date(‘now’)
計(jì)算機(jī)當(dāng)前月份的最后一天
SELECT?date(‘now’,’start?of?month’,’+1?month’,’-1?day’)
計(jì)算UNIX?時(shí)間戳1092941466表示的日期和時(shí)間
SELECT?datetime(‘1092941466’,’unixepoch’)
計(jì)算?UNIX?時(shí)間戳1092941466?表示的本地日期和時(shí)間
SELECT?datetime(‘1092941466’,’unixepoch’,’localtime’)
計(jì)算機(jī)當(dāng)前UNIX?時(shí)間戳
SELECT?strftime(‘%s’,’now’)
兩個(gè)日期之間相差多少天
SELECT?jolianday(‘now’)-jolianday(‘1981-12-23’)
兩個(gè)日期時(shí)間之間相差多少秒
SELECT?julianday(‘now’)*86400?-?julianday(’2004-01-01?02:34:56′)*86400
計(jì)算今年十月份第一個(gè)星期二的日期
SELECT?date(‘now’,'start?of?year’,'+9?months’,'weekday?2′);
SQLite函數(shù)整理
| SQLite包含了如下時(shí)間/日期函數(shù): datetime()的用法是:datetime(日期/時(shí)間,修正符,修正符…) 舉個(gè)例子: strftime()函數(shù)可以把YYYY-MM-DD?HH:MM:SS格式的日期字符串轉(zhuǎn)換成其它形式的字符串。 舉個(gè)例子: 在使用中發(fā)現(xiàn)SQLite不支持YYYY-MM-DD格式化,所以使用了strftime來處理。 SQLite內(nèi)建函數(shù)表
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
轉(zhuǎn)載于:https://my.oschina.net/mdongfeng/blog/118259
總結(jié)
以上是生活随笔為你收集整理的SQLite 函数大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kettle调用Java类
- 下一篇: 编程是一种对你的身体健康十分有害的工作