mysql計算字段數值和 計算欄位和數值處理函式

2021-10-17 21:23:28 字數 3717 閱讀 9915

拼接字段

mysql 的不同之處:多數 dbms 使用+或||來實現拼接,mysql 使用 concat()函式來實現。

拼接兩個列

將兩列拼接成乙個展示形式:vend_name (vend_country)

mysql> select concat(vend_name, ' (', vend_country, ')') from vendors order by vend_name;

| concat(vend_name, ' (', vend_country, ')') |

| acme (usa) |

| anvils r us (usa) |

| furball inc. (usa) |

| jet set (england) |

| jouets et ours (france) |

| lt supplies (usa) |

刪除多餘的空格 rtrim

select concat(rtrim(vend_name), ' (', vend_country, ')') from vendors order by vend_name;

顯然 mysql 還支援ltrim和trim分別刪除左邊的空格和兩邊的空格。

使用別名as

簽名拼接兩列的結果可以看到,拼接後的列名是concat(vend_name, ' (', vend_country, ')'),這顯然很不友好,所以我們可以使用別名。

mysql> select concat(rtrim(vend_name), ' (', rtrim(vend_country), ')') as vend_title from vendors order by vend_name;

| vend_title |

| acme (usa) |

| anvils r us (usa) |

| furball inc. (usa) |

| jet set (england) |

| jouets et ours (france) |

| lt supplies (usa) |

執行算術計算

執行算術運算並擴充字段顯示:

mysql> select prod_id, quantity, item_price, quantity*item_price as expanded_price from orderitems where order_num = 20005;

| prod_id | quantity | item_price | expanded_price |

| anv01 | 10 | 5.99 | 59.90 |

| anv02 | 3 | 9.99 | 29.97 |

| tnt2 | 5 | 10.00 | 50.00 |

| fb | 1 | 10.00 | 10.00 |

mysql 支援的加減乘除(+ - * 、)算術運算子,並用括號區分優先順序

mysql> select now();

| now() |

| 2018-06-30 16:33:47 |

1 row in set (0.00 sec)

資料處理函式

函式我們前面已經接觸了,比如 trim(),rtrim(),ltrim()。

文字處理函式

upper():

mysql> select vend_name, upper(vend_name) as vend_name_upcase from vendors order by vend_name;

| vend_name | vend_name_upcase |

| acme | acme |

| anvils r us | anvils r us |

| furball inc. | furball inc. |

| jet set | jet set |

| jouets et ours | jouets et ours |

| lt supplies | lt supplies |

常用的文字處理函式:

函式說明

left()

返回串左邊的字元

length()

返回串的長度

locate()

找出串的乙個子串

lower()

將串轉換為小寫

ltrim()

去掉串左邊的空格

right()

返回串右邊的字元

rtrim()

去掉串右邊的空格

soundex()

返回串的 soundex 值

substring()

返回子串的字元

upper()

將串轉換成大寫

日期和時間處理函式

函式說明

adddate()

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

addtime()

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

curdate()

返回當前日期

curtime()

返回當前時間

date()

返回日期時間的日期部分

datediff()

計算兩個日期之差

date_add()

高度靈活的日期運算函式

date_format()

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

day()

返回乙個日期的天數部分

datofweek()

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

hour()

返回乙個時間的小時部分

minute()

返回乙個日期的分鐘部分

month()

返回乙個日期的月份部分

now()

返回當前日期和時間

second()

返回乙個時間的秒部分

time()

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

year()

返回乙個日期的年份部分

基本日期比較:

select cust_id, order_num from orders where order_date = '2005-09-01';

上面的匹配顯然不合理,如果訂單日期精確到時間的話,就無法匹配上了。

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-30';

優化後select cust_id, order_num from orders where year(order_date) = 2005 and month(order_date) = 9;

數值處理函式

函式說明

abs()

返回乙個數的絕對值

cos()

返回乙個角度的余弦

exp()

返回乙個數的指數值

mod()

返回除操作的餘數

pi()

返回圓周率

rand()

返回乙個隨機數

sin()

返回乙個角度的正弦

sqrt()

返回乙個數的平方根

tan()

返回乙個角度的正切

MySQL計算字段

計算字段 資料庫中存放的表是按列存放,但是有時客戶機想獲得的資訊是若干列之間的組合,或者求和的值。這個組合或者求和的動作可以放在客戶機應用程式來做,但是在資料庫中實現更為高效。這個新計算出來的結果就稱為字段。例如我們需要vend的name後面用括號說明所屬國家。則可以實現如下,使用mysql的con...

MySQL 計算字段

字段 基本與列的意思相同,經常互換使用 拼接字段 select concat vend name,vend country,as newcolumn from vendors order by vend name 返回結果便會將 商名稱和 商位址放在一列,並在 商位址外加上括號 使用as為一列設定別...

mysql 計算字段

一 計算字段 儲存在資料庫表中的資料一般不是應用程式所需要的格式 1 如果想在乙個欄位中既顯示公司名,又顯示公司的位址,但這兩個資訊一般包含在不同的字段中。2 城市 州和郵編儲存在不同的列中,但郵件標籤列印程式卻需要把它們作為乙個恰當格式的字段檢索出來。3 列資料是大小寫混合的,但是報表程式需要的所...