存儲在表中的數據都不是應用程序所須要的。咱們須要直接從數據庫中檢索出轉換、計算或格式化過的數據;而不是檢索出數據,而後再在客戶機應用程序或報告程序中從新格式化。算法
簡單來講,就是直接從數據庫中檢索出幾個字段來轉成咱們須要的結果,而不是咱們檢索出來到客戶端再去轉換。數據庫
Concat函數:函數
將結果拼接起來。好比咱們有一個字段name和字段price,須要顯示成:name(price)的結果。3d
select Concat(name,'(',price,')') from tb2;
結果爲:code
上述Concat函數中,從圖片中能夠看到檢索出來的字段名字是一個Concat的語句名,而一般咱們不但願這麼顯示,用別名能夠解決這個問題:blog
select Concat(name,'(',price,')') as newName from tb2;
MySQL支持加減乘除運算符。圖片
select id,price,id*price as total from tb2 ;
其中total字段是id*price的結果。字符串
這張圖裏面的函數首字母都不用大寫,遵循以前的規則,所有大寫或者所有小寫便可。原型
原型:left(str,len); 即從str字符串左側開始截取len長度的字符。數學
select left(name,2) as len from tb2;
此語句截取name左側開始len長度字符串。
right函數同理,只是從右側開始而已。
轉換成大小寫:
select name,upper(name) as upper,lower(name) as lower from tb2;
結果:
原型爲:length(str);計算字符串長度。
select name, length(name) from tb2;
原型爲:locate(substr,str,pos);檢索子串substr出現的位置。
當不使用pos時,可看作默認pos=1,即從字符串的第一個字符開始檢索。
好比從第二個字符開始檢索字符'h'出現的位置:
select name ,locate('h',name,2) as locate from tb2;
分析結果,好比第一條記錄,第二個字符開始檢索,'h'出現的位置爲3。
原型爲:substr(str,pos),截取str從pos位置開始的字符串。
好比截取第三個位置開始的字符串:
select name,substr(name,3) as substr from tb2;
SOUNDEX 是一個將任何文本串轉換爲描述其語音表示的字母數字模式的算法。SOUNDEX考慮了相似的發音字符和音節,使得能對串進行發音比較而不是字母比較。
例子:
假如咱們要檢索一個2005-09-01日期的訂單,那麼咱們若是直接使用where語句可能不能達到咱們指望的效果:
select order_name from tb where order_date='2005-09-01';
由於咱們存儲的時候,日期格式可能並非這麼存的。因此咱們要使用日期時間處理函數。
好比這個日期,咱們可使用上表中的date()函數:
select order_name from tb where date(order_date)='2005-09-01';
上述函數大可能是經過一個時間,來返回其中的日期、時間等部分。而Now函數是返回當前的日期和時間。
大可能是數學上的處理函數: