日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQLite 函数大全

發布時間:2025/7/14 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQLite 函数大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

SQLite 函數大全

發表回復


abs(X)?返回參數X的絕對值。?
coalesce(X,Y,…)?返回第一個非空參數的副本。若所有的參數均為NULL,返回NULL。至少2個參數。?
glob(X,Y)?用于實現SQLite的?“X?GLOB?Y”語法。可使用?sqlite3_create_function()?重載該函數從而改變GLOB運算符的功能。?
ifnull(X,Y)?返回第一個非空參數的副本。?若兩個參數均為NULL,返回NULL。與上面的?coalesce()類似。?
last_insert_rowid()?返回當前數據庫連接最后插入行的ROWIDsqlite_last_insert_rowid()?API函數同樣可用于得到該值。?
length(X)?返回X的長度,以字符計。如果SQLite被配置為支持UTF-8,則返回UTF-8字符數而不是字節數。?
like(X,Y?[,Z])?用于實現SQL語法“X?LIKE?Y?[ESCAPE?Z]“.若使用可選的ESCAPE子句,則函數被賦予三個參數,否則只有兩個。可使用sqlite3_create_function()?重載該函數從而改變LIKE運算符的功能。?注意同時重載like()的兩參數和三參數版本,否則在使用/不使用?ESCAPE子句時,LIKE運算符的實現可能使用的是不同的代碼。?
lower(X)?返回X字符串的所有字符小寫化版本。這一轉換使用C語言庫的tolower()函數,對UTF-8字符不能提供好的支持。?
max(X,Y,…)?返回最大值。參數可以不僅僅為數字,可以為字符串。大小順序由常用的排序法則決定。注意,max()在有2個或更多參數時為簡單函數,但當僅給出一個參數時它變為聚集函數。?
min(X,Y,…)?返回最小值。與max()類似。?
nullif(X,Y)?當兩參數不同時返回X,否則返回NULL.?
quote(X)?返回參數的適于插入其它SQL語句中的值。字符串會被添加單引號,在內部的引號前會加入逃逸符號。?BLOB被編碼為十六進制文本。當前的VACUUM使用這一函數實現。在使用觸發器實現撤銷/重做功能時這一函數也很有用。?
random(*)?返回介于-2147483648和?+2147483647之間的隨機整數。?
round(X)
round(X,Y)?X四舍五入,保留小數點后Y位。若忽略Y參數,則默認其為0。?
soundex(X)?計算字符串Xsoundex編碼。參數為NULL時返回字符串“?000″.缺省的SQLite是不支持該函數的,當編譯時選項?-DSQLITE_SOUNDEX=1?時該函數才可用。?
sqlite_version(*)?返回所運行的SQLite庫的版本號字符串。如?“2.8.0″。?
substr(X,Y,Z)?返回輸入字符串X中以第Y個字符開始,Z個字符長的子串。?X最左端的字符序號為1。若Y為負,則從右至左數起。若SQLite配置支持UTF-8,則字符代表的是UTF-8字符而非字節。?
typeof(X)?返回表達式X的類型。返回值可能為“null”,?”integer”,?”real”,?”text”,?以及?“blob”.?SQLite的類型處理參見SQLite3的數據類型.?
upper(X)?返回X字符串的所有字符大寫化版本。這一轉換使用C語言庫的toupper()函數,對UTF-8字符不能提供好的支持。?

以下是缺省可用的聚集函數列表。可以使用C語言寫出其它的聚集函數然后使用sqlite3_create_function()?API函數添加到數據庫引擎中。

在單參數聚集函數中,參數可以加前綴DISTINCT。這時重復參數會被過濾掉,然后才穿入到函數中。例如,函數“count(distinct?X)”返回字段X的不重復非空值的個數,而不是字段X的全部非空值。?

avg(X)?返回一組中非空的X的平均值。非數字值作0處理。avg()的結果總是一個浮點數,即使所有的輸入變量都是整數。?

count(X)
count(*)?返回一組中X是非空值的次數的第一種形式。第二種形式(不帶參數)返回該組中的行數。?
max(X)?返回一組中的最大值。大小由常用排序法決定。?
min(X)?返回一組中最小的非空值。大小由常用排序法決定。僅在所有值為空時返回NULL。?
sum(X)
total(X)?返回一組中所有非空值的數字和。若沒有非空行,sum()返回NULLtotal()返回0.0.?NULL通常情況下并不是對于沒有行的和的一個有意義的結果,但SQL標準如此要求,且大部分其它SQL數據庫引擎這樣定義sum(),所以SQLite?也如此定義以保證兼容。我們提供非標準的total()函數作為解決該SQL語言設計問題的一個簡易方法。?

total()的返回值式中為浮點數。sum()可以為整數,當所有非空輸入均為整數時,和是精確的。?若sum()的任意一個輸入既非整數也非NULL或計算中產生整數類型的溢出時,sum()返回接近真和的浮點數。

SQLite的日期時間函數

1.date(日期時間字符串,?修正符,?修正符,?……)
2.time(日期時間字符串,?修正符,?修正符,?……)
3.datetime(日期時間字符串,?修正符,?修正符,?……)
4.julianday(日期時間字符串,?修正符,?修正符,?……)
5.strftime(日期時間格式,?日期時間字符串,?修正符,?修正符,?……)

????上述五個函數需要一個日期時間字符串做參數,后面可以跟零到多個修正符參數。而?strftime()?函數還需要一個日期時間格式字符串做第一個參數。

  1.date()?函數返回一個以?“YYYY-MM-DD”?為格式的日期;
2.time()?函數返回一個以?“YYYY-MM-DD?HH:MM:SS”?為格式的日期時間;
3.julianday()?函數返回一個天數,從格林威治時間公元前4714年11月24號開始算起;
4.strftime()?函數返回一個經過格式話的日期時間,它可以用下面的符號對日期和時間進行格式化:
%d??一月中的第幾天?01-31
%f??小數形式的秒,SS.SSSS
%H??小時?00-24
%j??一年中的第幾天?01-366
%J??Julian?Day?Numbers
%m??月份?01-12
%M??分鐘?00-59
%s??從?1970-01-01日開始計算的秒數
%S??秒?00-59
%w??星期,0-6,0是星期天
%W??一年中的第幾周?00-53
%Y??年份?0000-9999
%%??%?百分號

  其他四個函數都可以用?strftime()?函數來表示:

  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”,…)

  日期時間字符串,可以用以下幾種格式:

  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”是一個分割日期和時間的字符;第八種到第十種格式只代表2000-01-01日的時間,第十一種格式的’now’表示返回一個當前的日期和時間,使用格林威治時間(UTC);第十二種格式表示一個?Julian?Day?Numbers。

  修正符,日期和時間可以使用下面的修正符來更改日期或時間:

  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

  前六個修正符就是簡單的增加指定數值的時間和日期;第七到第十個修正符表示返回當前日期的開始;第十一個修正符表示返回下一個星期是N的日期和時間;第十二個修正符表示返回從1970-01-01開始算起的秒數;第十三個修正符表示返回本地時間。

  下面舉一些例子:

  計算機當前時間
SELECT?date(‘now’)
計算機當前月份的最后一天
SELECT?date(‘now’,’start?of?month’,’+1?month’,’-1?day’)
計算UNIX?時間戳1092941466表示的日期和時間
SELECT?datetime(‘1092941466’,’unixepoch’)
計算?UNIX?時間戳1092941466?表示的本地日期和時間
SELECT?datetime(‘1092941466’,’unixepoch’,’localtime’)
計算機當前UNIX?時間戳
SELECT?strftime(‘%s’,’now’)
兩個日期之間相差多少天
SELECT?jolianday(‘now’)-jolianday(‘1981-12-23’)
兩個日期時間之間相差多少秒
SELECT?julianday(‘now’)*86400?-?julianday(’2004-01-01?02:34:56′)*86400
計算今年十月份第一個星期二的日期
SELECT?date(‘now’,'start?of?year’,'+9?months’,'weekday?2′);

SQLite函數整理

SQLite包含了如下時間/日期函數:
datetime()…………………..產生日期和時間
date()………………………產生日期
time()………………………產生時間
strftime()…………………..對以上三個函數產生的日期和時間進行格式化

datetime()的用法是:datetime(日期/時間,修正符,修正符…)
date()和time()的語法與datetime()相同。
在時間/日期函數里可以使用如下格式的字符串作為參數:
YYYY-MM-DD
YYYY-MM-DD?HH:MM
YYYY-MM-DD?HH:MM:SS
YYYY-MM-DD?HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是產生現在的時間。

舉個例子:
select?date(’2006-10-17′,’+1?day’,'+1?year’);
結果:2007-10-18

strftime()函數可以把YYYY-MM-DD?HH:MM:SS格式的日期字符串轉換成其它形式的字符串。
strftime()的語法是strftime(格式,?日期/時間,?修正符,?修正符,?…)

舉個例子:
select?strftime(‘%Y.%m.%d?%H:%M:%S’,'now’,'localtime’);
結果:2006.10.17?21:41:09

在使用中發現SQLite不支持YYYY-MM-DD格式化,所以使用了strftime來處理。

SQLite內建函數表

算術函數

abs(X)

返回給定數字表達式的絕對值。

max(X,Y[,...])

返回表達式的最大值。

min(X,Y[,...])

返回表達式的最小值。

random(*)

返回隨機數。

round(X[,Y])

返回數字表達式并四舍五入為指定的長度或精度。

字符處理函數

length(X)

返回給定字符串表達式的字符個數。

lower(X)

將大寫字符數據轉換為小寫字符數據后返回字符表達式。

upper(X)

返回將小寫字符數據轉換為大寫的字符表達式。

substr(X,Y,Z)

返回表達式的一部分。

randstr()

quote(A)

like(A,B)

確定給定的字符串是否與指定的模式匹配。

glob(A,B)

條件判斷函數

coalesce(X,Y[,...])

ifnull(X,Y)

nullif(X,Y)

集合函數

avg(X)

返回組中值的平均值。

count(X)

返回組中項目的數量。

max(X)

返回組中值的最大值。

min(X)

返回組中值的最小值。

sum(X)

返回表達式中所有值的和。

其他函數

typeof(X)

返回數據的類型。

last_insert_rowid()

返回最后插入的數據的ID。

sqlite_version(*)

返回SQLite的版本。

change_count()

返回受上一語句影響的行數。

last_statement_change_count()

轉載于:https://my.oschina.net/mdongfeng/blog/118259

總結

以上是生活随笔為你收集整理的SQLite 函数大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。