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;
分析:upper()將文字轉換為大寫,因此本例子中每個**商都列出兩次,第一次為vendors表中儲存的值,第二次作為列vend_name_upcase轉換為大寫。+
-----------------+------------------+
| 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 |
+-----------------+------------------+
常用的文字函式函式
說明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'
);
分析:where子句使用soundex()函式來轉換cust_ contact列值和搜尋串為它們的soundex值。因為michael green和 michelle green發音相似,所以它們的soundex值匹配,因此where子句正確地過濾出了所需的資料。+
------------+----------------+
| cust_name | cust_contact |
+------------+----------------+
| kids place | michelle green |
+------------+----------------+
常用的日期和時間處理函式
函式說明
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'
;
分析:它檢索出乙個訂單記錄,該訂單記錄的order_date為2005-09-01。+
------------+-----------+
| cust_id | order_num |
+------------+-----------+
|1000000004
|20007|+
------------+-----------+
order_ date的資料型別為datetime。
指示mysql僅將給出的日期與列中的日期部分進行比較,而不是將給出的日期與整個列值進行比較。為此,必須使用date()函式。date(order_date)指示mysql僅提取列的日期部分,更可靠的select語句為:
如果你想檢索出2023年9月下的所有訂單,則語句為:select cust_id ,order_num
from orders
where
date
(order_date)
='2005-09-01'
;
輸入
輸出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|+
------------+-----------+
分析:year()是乙個從日期(或日期時間)中返回年份的函式。類似month()從日期中返回月份。select cust_id ,oder_num
from orders
where
year
(order_date)
=2005
andmonth
(order_date)=9
;
數值處理函式僅處理數值資料。這些函式一般主要用於代數、三角或幾何運算。
常用數值處理函式 如下表所示:
函式說明
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.取單個字元的拼音聲母 等等演示一下 漢字轉拼...