MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)(推薦)
1、Concat函數(shù)。
連接字符串常用:concat函數(shù)。如sql查詢條件的like查詢, AND c.name like concat(#{param.name},'%')
將Int 轉(zhuǎn)為varchar經(jīng)常用 concat函數(shù),比如concat(8,'0') 得到字符串 '80'
2、Cast函數(shù);CONVERT函數(shù)。
用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name).
SELECT CONVERT('abc' USING utf8);
將varchar 轉(zhuǎn)為Int 用 cast(str as unsigned) str為varchar類型的字符串 。
比如常用的百分比轉(zhuǎn)換:
select cast((1/3)*100 as UNSIGNED) as percent from dual;
result: 33
MySQL類型轉(zhuǎn)換函數(shù)參數(shù) : CAST(xxx AS 類型) , CONVERT(xxx,類型)
這個(gè)類型 可以是以下值其中的 一個(gè):
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
整數(shù) : SIGNED
無符號整數(shù) : UNSIGNED
二進(jìn)制,同帶binary前綴的效果 : BINARY
字符型,可帶參數(shù) : CHAR()
日期 : DATE
時(shí)間: TIME
日期時(shí)間型 : DATETIME
浮點(diǎn)數(shù) : DECIMAL
mysql> SELECT BINARY 'a' = 'A';
-> 0
3、IF函數(shù)
mysql中if是函數(shù)而不是命令
IF(expr1,expr2,expr3)
如果 expr1 為真(expr1 <> 0 以及 expr1 <> NULL),那么 IF() 返回 expr2,否則返回 expr3。IF() 返回一個(gè)數(shù)字或字符串,這取決于它被使用的語境:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
如果 expr2 或 expr3 明確地為 NULL,那么函數(shù) IF() 的返回值類型為非 NULL 列的類型。(這在選擇在 MySQL 4.0.3 中新加入)。 expr1 是作為一個(gè)整數(shù)值被計(jì)算的,這就意味著,如果測試的是一個(gè)浮點(diǎn)型或字符串值,就必須進(jìn)行比較操作:
mysql> SELECT IF(0.1,1,0); -> 0 mysql> SELECT IF(0.1<>0,1,0); -> 1
在上面第一種情況下,IF(0.1) 返回 0,是因?yàn)?0.1 被轉(zhuǎn)換為一個(gè)整數(shù)值,返回 IF(0) 的測試結(jié)果。這可能不是你所期望的。在第二種情況下,比較測試原浮點(diǎn)數(shù)是否為一個(gè)非零值。比較的結(jié)果被作為整數(shù)使用。 缺省的 IF() 返回值類型 (當(dāng)結(jié)果存儲在臨時(shí)表中時(shí),這是非常重要的) 在 MySQL 3.23 中按下列方式確定: 表達(dá)式 返回值
表達(dá)式(expr2)或表達(dá)式(expr3)返回值為字符串 字符串
表達(dá)式(expr2)或表達(dá)式(expr3)返回值為浮點(diǎn)型值 浮點(diǎn)型
表達(dá)式(expr2)或表達(dá)式(expr3)返回值為整型 整型
如果表達(dá)式(expr2)和表達(dá)式(expr3)均是字符串,同時(shí)兩個(gè)字符串均是忽略字母大小寫的,那么返回值也是忽略字母大小寫的(從 MySQL 3.23.51 開始)。
以上所述是小編給大家介紹的MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
與MSSQL對比學(xué)習(xí)MYSQL的心得(四)--BLOB數(shù)據(jù)類型
在MYSQL中BLOB是一個(gè)二進(jìn)制大對象,用來儲存可變數(shù)量的數(shù)據(jù),而MSSQL中并沒有BLOB數(shù)據(jù)類型,只有大型對象數(shù)據(jù)類型(LOB)2014-06-06
MySQL中安裝樣本數(shù)據(jù)庫Sakila過程分享
這篇文章主要介紹了MySQL中安裝樣本數(shù)據(jù)庫Sakila過程分享,Sakila數(shù)據(jù)庫主要用來做一些基本的操作以及壓力測試等,需要的朋友可以參考下2014-10-10
MySQL for update鎖表還是鎖行校驗(yàn)(過程詳解)
在MySQL中,使用for update子句可以對查詢結(jié)果集進(jìn)行行級鎖定,以便在事務(wù)中對這些行進(jìn)行更新或者防止其他事務(wù)對這些行進(jìn)行修改,這篇文章主要介紹了MySQL for update鎖表還是鎖行校驗(yàn),需要的朋友可以參考下2024-02-02
MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
本篇文章是對MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
MySQL獲取當(dāng)前時(shí)間的多種方式總結(jié)
負(fù)責(zé)的項(xiàng)目中使用的是mysql數(shù)據(jù)庫,頁面上要顯示當(dāng)天所注冊人數(shù)的數(shù)量,獲取當(dāng)前的年月日,下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL獲取當(dāng)前時(shí)間的多種方式,需要的朋友可以參考下2023-02-02

