使用函式來處理資料

2021-10-05 21:30:36 字數 4889 閱讀 3341

sql支援利用函式來處理資料。函式一般是在資料上執行的,它給資料的轉換和處理提供了方便。

函式的可移植性

函式沒有sql可移植性強,能執行在多個系統的**成為可移植的(protable)。先對來說,多數sql語句是可移植的,在sql實現之間有差異時,這些差異通常不那麼難處理。

而函式的可移植性卻不強。幾乎每種主要的dbms的實現都支援其他實現不支援的函式,而且有時差異還很大。

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

1.用於處理文字串(如刪除或者填充值,轉換為大小寫)的文字函式。

2.用於在數值資料上進行算術操作(如返回絕對值,進行代數計算)的數值函式。

3.用於處理日期和時間值,並從這些特定值中提取特殊成分(例如,返回兩個日期之差,檢查日期的有效性等)的日期和函式。

4.返回dbms正使用的特殊資訊(如返回使用者登入資訊,檢查版本資訊)的系統函式。

這次使用upper()函式:

輸入

select vend_name,upper(vend_name)

as vend_name_upcase

from vendors

order

by vend_name;

輸出

+

-----------------+------------------+

| vend_name | vend_name_upcase |

+-----------------+------------------+

| bear emporium | bear emporium |

| bears r us | bears r us |

| doll house inc.

| doll house inc.

|| fun and games | fun and games |

| furball inc.

| furball inc.

|| jouets et ours | jouets et ours |

+-----------------+------------------+

分析:upper()將文字轉換為大寫,因此本例子中每個**商都列出兩次,第一次為vendors表中儲存的值,第二次作為列vend_name_upcase轉換為大寫。

常用的文字函式函式

說明left()

返回串左邊的字元

length()

返回串的長度

locale()

找出串的乙個子串

lower()

將串轉換為小寫

ltrim()

去掉串左邊的空格

right()

返回串右邊的字元

rtrim()

去掉串右邊的空格

soundex()

返回串的soundex值

substring()

返回淄川的字元

upper()

將轉換為大寫

其中soundex是乙個將任何文字串轉換為描述其語音表示的字母模式的演算法。soundex考慮了類似的發音字元和音節,使得能對串進行發音比較而不是字母比較

輸入

select cust_name,cust_contact

from customers

where soundex(cust_contact )

= soundex(

'michael green'

);

輸出

+

------------+----------------+

| cust_name | cust_contact |

+------------+----------------+

| kids place | michelle green |

+------------+----------------+

分析:where子句使用soundex()函式來轉換cust_ contact列值和搜尋串為它們的soundex值。因為michael green和 michelle green發音相似,所以它們的soundex值匹配,因此where子句正確地過濾出了所需的資料。

常用的日期和時間處理函式

函式說明

adddate()

增加乙個日期(天、周等)

addtime()

增加乙個時間(時、分等)

curdate()

返回當前日期

curtime()

返回當前時間

date()

返回日期時間的日期部分

datediff()

計算兩個日期之差

date_add()

高度靈活的日期運算函式

date_format()

返回乙個格式化的日期或時間串

day()

返回乙個日期的天數部分

dayofweek()

對於乙個日期,返回對應的星期幾

hour()

返回乙個時間的小時部分

minute()

返回乙個時間的分鐘部分

month()

返回乙個日期的月份部分

now()

返回當前日期和時間

second()

返回乙個時間的秒部分

time()

返回乙個日期時間的時間部分

year()

返回乙個日期的年份部分

如果要使用日期和時間處理函式,首先要知道日期的格式。

在mysql中,不管是插入還是更新資料表的值還是使用where語句進行過濾,日期必須是yyyy-mm-dd。因此2023年9月1日,給出的日期格式為 2005-09-01。

例子如下

輸入

select cust_id ,order_num

from orders

where order_date =

'2005-09-01'

;

輸出

+

------------+-----------+

| cust_id | order_num |

+------------+-----------+

|1000000004

|20007|+

------------+-----------+

分析:它檢索出乙個訂單記錄,該訂單記錄的order_date為2005-09-01。

order_ date的資料型別為datetime。

指示mysql僅將給出的日期與列中的日期部分進行比較,而不是將給出的日期與整個列值進行比較。為此,必須使用date()函式。date(order_date)指示mysql僅提取列的日期部分,更可靠的select語句為:

select cust_id ,order_num

from orders

where

date

(order_date)

='2005-09-01'

;

如果你想檢索出2023年9月下的所有訂單,則語句為:

輸入

select cust_id ,order_num

from orders

where

date

(order_date)

between

'2005-09-01'

and'2005-09-9-30'

;

輸出

+

------------+-----------+

| cust_id | order_num |

+------------+-----------+

|1000000004

|20007||

1000000005

|20008||

1000000001

|20009|+

------------+-----------+

還要另一種方法,不需要記住每個月有多少天

select cust_id ,oder_num

from orders

where

year

(order_date)

=2005

andmonth

(order_date)=9

;

分析:year()是乙個從日期(或日期時間)中返回年份的函式。類似month()從日期中返回月份。

數值處理函式僅處理數值資料。這些函式一般主要用於代數、三角或幾何運算。

常用數值處理函式 如下表所示:

函式說明

abs()

返回乙個數的絕對值

cos()

返回乙個角度的余弦

exp()

返回乙個數的指數值

mod()

返回除操作的餘數

pi()

返回圓周率

rand()

返回乙個隨機數

sin()

返回乙個角度的正弦

sqrt()

返回乙個數的平方根

tan()

返回乙個角度的正切

使用Flask WTF來處理表單

在flask中,為了處理web表單,一般使用flask wtf擴充套件,它封裝了wtfforms,並且有驗證表單資料的功能。可以使用flash訊息閃回把訊息傳給模板 from flask import flask,render template,request,flash cwtnice 目的,實現...

使用xpdf來處理中文PDF文件

pdfbox看起來非常的方便,它的api功能強大。甚至能和lucene進行無縫的結合。但是它有乙個致命的弱點,就是它不支援中文。要提取中文的文字,可以採用另乙個非常出色的工具xpdf。讀者可以到 2 配置 將xpdf 3.01pl2 win32.zip解壓到c xpdftest目錄下,然後將xpdf...

C 之使用StringHelper來處理漢字轉拼音

stringhelper字串處理幫助 現在已經實現的功能有 1.用給定的字元填充源字串的左邊以達到指定的長度 2.用給定的字元填充源字串的右邊以達到指定的長度 3.轉半形的函式 dbc case 4.轉全形的函式 sbc case 5.漢字轉拼音縮寫 6.取單個字元的拼音聲母 等等演示一下 漢字轉拼...