mysql拼接两个字段_重拾MySQL之创建计算字段和函数
一、計算字段
有時候,數據庫中的數據格式不一定是使用所需要的數據格式,需要對原數據進行拼接、裁剪、計算等操作,這時就要創建計算字段。
1 拼接
顧名思義,拼接就是將原屬于表中兩個列的字段拼成一個列,在其他的大部分DBMS中,拼接往往通過+ 或者||來實現,而在MySQL中,需要借用Concat函數來實現,如下列,將原顧客名稱、顧客國家拼成一個列:
2.命名
在拼接工作完成后,新得到的列實現了計算功能,但是并沒有名字,我們需要利用AS 關鍵字為其命名:
(Rtrim()為去除右側空格的函數,相關的還有Ltrim()去除左邊空格、Trim() 去除左右兩邊空格)
3,執行算術計算
MySQL支持加減乘除幾個基本的算數操作符(+ - * /):
二、函數
和其他的DBMS一樣,SQL支持利用函數來處理數據,前面的Rtrim等就是函數,但是需要注意的是,不同DBMS之間的函數兼容性并不好,所以在使用了函數時,最好做好注釋,為以后可能的DBMS 之間的移植提供方便。
大多數SQL 支持以下幾種類型 的函數:
(1)?處理文本串的文本函數(如大小寫,刪除或者填充值等等)
(2)用在數值數據上進行算術操作的數值函數
(3)用于處理日期和時間并從這些值中提取特定成分的日期和時間函數
(4)返回DBMS正使用的特殊信息(如返回用戶登錄信息、檢查版本信息)的系統函數。
(1)文本處理函數
left()? ??返回串左邊的字符
length()?? ?返回串的長度
locate()? ??返回串的一個子串
lower()? ??將串轉換為小寫
Ltrim()? ??去掉串左邊的空格
Right()? ? 返回串右邊的字符
Rtrim() 去掉串右邊的空格
Soundex()? ??返回串的Soundex值
SubString()? ? 返回字串的字符
Upper()? ? 將串轉換為大寫
例子如下:
其中soundex函數值得解釋一下,這是根據讀音來進行匹配的函數,有時候知道數據的大致讀音但并不精確知道數據,就可以利用這個函數匹配數據庫中讀音類似或者相同的數據,如數據為Y.Lee,但利用讀音相近的Y.lie也可以匹配:
(2)日期和時間函數
在SQL 中,日和時間函數使用特殊的數據類型和格式儲存,日期和時間函數就是用來讀取、統計和處理這些值。
AddDate()? ??增加一個日期
AddTime()? ? 增加一個時間
CurDate()? ??返回當前日期
CurTime()? ? 返回當前時間
Date()?? ?返回日期時間的日期部分
DateDiff()? ? 計算兩個日期之差
Date_Add()? ??日期運算函數
Date_Format()? ??返回一個格式化的日期或者時間串
Day()? ?返回一個日期的天數部分
Day0fweek()? ? ?返回一個日期對應的星期幾
Hour()? ??返回一個時間的小時部分
Minute()? ? 返回一個時間的分鐘部分
Month()? ? 返回一個日期的月份部分
Now() 返回當前時間和日期
Second()? ? 返回一個時間的秒數部分
Time()? ? 返回一個日期時間對應的時間部分
Year()? ? 返回一個日期的年數部分
在SQL中不管是更新還是插入新的時間數據時,都需要使用固定的日期格式:yyyy-mm-dd,使用兩位數的年份SQL 也可以識別,但可能會造成不必要的誤解,這也是編碼的一個好習慣。
但在進行日期數據匹配時,我們并不能保證數據庫中 的數據格式是yyyy-mm-dd還是yyyy-mm-dd hh-mm-ss,如果是后者,再使用select進行搜索,where date=‘2005-09-01’這樣的條件行就永遠不會返回數據,因此,在匹配之前,最好使用date()函數將時間數據格式固定為日期格式,就算之后時間數據格式有沒有變化,代碼都不用修改。
例:返回2005年9月份的訂單行
有兩種方法:
(3)數值處理函數
數值處理函數是DBMS中一致性最高的函數類型
Abs()? ? 返回絕對值
Cos()? ? 返回余弦值
Exp()? ? 返回一個數的指數值
Mod()? ? 返回除操作的余數
Pi()? ? 返回圓周率
Rand()? ? 返回一個隨機數
Sin()? ? 返回正弦值
Sqrt()?? ?返回平方根
Tan()? ? 返回正切值
總結
以上是生活随笔為你收集整理的mysql拼接两个字段_重拾MySQL之创建计算字段和函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python中django创建网页终端
- 下一篇: python mysql数据库长连接_p