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