SQL必知必會 使用資料處理函式

2021-08-18 14:59:01 字數 2498 閱讀 3296

《sql必知必會》讀書筆記

1.函式與幾乎所有dbms都等同地支援sql語句(如select)不同,每乙個dbms都有特定的函式。事實上,只有少數幾個函式被所有主要的dbms等同支援。

dbms函式的差異:

可以看到,與sql語句不一樣,sql函式不是可移植的。這表示為特定sql實現編寫的**在其他實現中可能不正常。

2.使用函式

大多數sql實現支援以下型別的函式。

3.文字處理函式

常用的文字處理函式:

select vend_name, upper(vend_name) as vend_name_upcase

from vendors

vend_name vend_name_upcase

bear emporium bear emporium

bears r us bears r us

doll and inc. doll house inc.

4.日期和時間處理函式應用程式一般不使用日期和時間的儲存格式,因此日期和時間函式總是用來讀取、統計和處理這些值。由於這個原因,日期和時間函式在sql中具有重要的作用。遺憾的是,它們很不一致,可移植性最差。

sql serve

select order_num

from orders

where datepart(yy,order_date) = 2012

order_num

20005

20006

20007

20008

20009

access

select order_num

from orders

where datepart(yyyy,order_date) = 2012

這個例子中,datepart()函式返回日期的一部分。datepart()函式有兩個引數,它們分別是返回的成分和從中返回成分的日期。

postgresql類似功能的date_part()函式

select order_num

from orders

where date_part('year',order_date) = 2012

oracleoracle沒有上述兩個函式,不過有幾個可用來完成相同檢索的日期處理函式。

select order_num

from orders

where to_number(t0_char(order_date,'yyyy')) = 2012

在這個例子中,to_char()函式用來提取日期的成分,to_number()用來將提取出的成分轉換為數值,以便能與2012進行比較。

完成相同工作的另一方法是使用between操作符:

select order_num 

from orders

where order_date between to_date('01-01-2012')

and to_date('12-31-2012')

在此例子中,oracle的to_date()函式用來將兩個字串轉換為日期。

mysql和mariadb

mysql和mariadb使用者可使用名為year()的函式從日期中提取年份:

select order_num

from orders

where

year(order_date) = 2012

sqlite

select order_num

from orders

where strftime('%y',order_date) = 2012

這裡給出的例子提取和使用日期的成分(年)。按月份過濾,可以進行相同的處理,指定and操作符以及年和月份的比較。

大多數dbms具有比較日期、執行基於日期的運算、選擇日期格式等的函式。

5.數值處理函式

數值處理函式僅處理數值資料。

在主要dbms的函式中,數值函式是最一致、最統一的函式。

SQL 必知必會 筆記 6 使用資料處理函式

與sql 語句不一樣,sql 函式不是可移植的。為特定sql 實現編寫的 在其他實現中可能不正常。因為各個dbms廠商對函式的實現有很大的區別。常用函式1.文字處理函式 2.日期和時間處理函式 日期和時間採用相應的資料型別儲存在表中,每種dbms 都有自己的特 殊形式。日期和時間值以特殊的格式儲存,...

SQL 必知必會 筆記 6 使用資料處理函式

與sql 語句不一樣,sql 函式不是可移植的。為特定sql 實現編寫的 在其他實現中可能不正常。因為各個dbms廠商對函式的實現有很大的區別。常用函式1.文字處理函式 2.日期和時間處理函式 日期和時間採用相應的資料型別儲存在表中,每種dbms 都有自己的特 殊形式。日期和時間值以特殊的格式儲存,...

海量資料處理題目必知必會

或者如下闡述 雪域之鷹 演算法思想 分而治之 hash 1.ip位址最多有2 32 4g種取值情況,所以不能完全載入到記憶體中處理 2.可以考慮採用 分而治之 的思想,按照ip位址的hash ip 1024值,把海量ip日誌分別儲存到1024個小檔案中。這樣,每個小檔案最多包含4mb個ip位址 3....