Mysql 經(jīng)常使用的函數(shù)

大小寫控制函數(shù)

  • LOWER(str) 轉(zhuǎn)換大小寫混合的字符串為小寫字符串
  • UPPER(str) 轉(zhuǎn)換大小寫混合的字符串為大寫字符串。

字符處理函數(shù)

  • CONCAT(str1,str2,...) 將 str1、str2 等字符串連接起來
  • SUBSTR(str,pos,len) 從 str 的第 pos 位(范圍:1~str.length)開始,截取長(zhǎng)度為len的字符串
  • LENGTH(str) 獲取 str 的長(zhǎng)度
  • INSTR(str,substr) 獲取 substr 在 str 中的位置
  • LPAD(str,len,padstr)/RPAD(str,len,padstr) 在str的左/右邊插入字符串灵迫,插入長(zhǎng)度為len,如果str的長(zhǎng)度大于len的數(shù)量,則顯示從左側(cè)自動(dòng)截取len的長(zhǎng)度
  • TRIM(str) 從 str 中刪除開頭和結(jié)尾的空格(不會(huì)處理字符串中間含有的空格)
  • LTRIM(str) 從 str 中刪除左側(cè)開頭的空格
  • RTRIM(str) 從 str 中刪除右側(cè)結(jié)尾的空格
  • REPLACE(str,from_str,to_str) 將 str 中的 from_str 替換為 to_str(會(huì)替換掉所有符合from_str 的字符串)

數(shù)字函數(shù)

  • ROUND(arg1,arg2):四舍五入指定小數(shù)的值。 arg1:小數(shù)值 arg2:保留小數(shù)的個(gè)數(shù)
  • ROUND(arg1):四舍五入保留整數(shù)香伴。 arg1:小數(shù)值
  • TRUNC(arg1,arg2):截?cái)嘀付ㄐ?shù)的值,不做四舍五入處理具则。arg1:小數(shù)值 arg2:保留小數(shù)的個(gè)數(shù)
  • MOD(arg1,arg2):取余即纲。arg1:小數(shù)值 arg2:保留余數(shù)的個(gè)數(shù)

日期函數(shù)

  • SYSDATE() 或者 NOW() 返回當(dāng)前系統(tǒng)時(shí)間,格式為 YYYY-MM-DD hh-mm-ss
  • CURDATE() 返回系統(tǒng)當(dāng)前日期博肋,不返回時(shí)間
  • CURTIME() 返回當(dāng)前系統(tǒng)中的時(shí)間低斋,不返回日期
  • DAYOFMONTH(date) 計(jì)算日期 d 是本月的第幾天
  • DAYOFWEEK(date) 日期 d 今天是星期幾,1 星期日匪凡,2 星期一膊畴,以此類推
  • DAYOFYEAR(date) 返回指定年份的天數(shù)
  • DAYNAME(date) 返回 date日期是星期幾
  • LAST_DAY(date) 返回 date日期當(dāng)月的最后一天

轉(zhuǎn)換函數(shù)

  • DATE_FORMAT(date,format) 將日期轉(zhuǎn)換成字符串(類似 oracle 中的 to_char())
  • STR_TO_DATE(str,format) 將字符串轉(zhuǎn)換成日期(類似 oracle中的 to_date())
  1. select DATE_FORMAT(NOW(),'%Y%m%d')


    image.png
  1. select STR_TO_DATE('2021年08月05日','%Y年%m月%d日') 此處'%Y年%m月%d日的年月日必須帶上


    image.png

格式 描述

%a 縮寫星期名
%b 縮寫月名
%c 月,數(shù)值
%D 帶有英文前綴的月中的天
%d 月的天病游,數(shù)值(00-31)
%e 月的天唇跨,數(shù)值(0-31)
%f 微秒
%H 小時(shí) (00-23)
%h 小時(shí) (01-12)
%I 小時(shí) (01-12)
%i 分鐘,數(shù)值(00-59)
%j 年的天 (001-366)
%k 小時(shí) (0-23)
%l 小時(shí) (1-12)
%M 月名
%m 月衬衬,數(shù)值(00-12)
%p AM 或 PM
%r 時(shí)間买猖,12-小時(shí)(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 時(shí)間, 24-小時(shí) (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,與 %X 使用
%v 周 (01-53) 星期一是一周的第一天佣耐,與 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年政勃,其中的星期日是周的第一天,4 位兼砖,與 %V 使用
%x 年奸远,其中的星期一是周的第一天既棺,4 位,與 %v 使用
%Y 年懒叛,4 位
%y 年丸冕,2 位

通用函數(shù)

  • IFNULL(expr1,expr2) 判斷 expr1 是否為 null,如果為 null薛窥,則用 expr2 來代替 null(類似 oracle 的 NVL()函數(shù))
  • NULLIF(expr1,expr2) 判斷 expr1 和 expr2 是否相等胖烛,如果相等則返回 null,如果不相等則返回 expr1
  • IF(expr1,expr2,expr3) 判斷 expr1 是否為真 (是否不為 null) 诅迷, 如果為真佩番, 則使用 expr2替代 expr1;如果為假罢杉,則使用 expr3 替代 expr1(類似 oracle的 NVL2()函數(shù))
  • COALESCE(value,...) 判斷 value 的值是否為 null趟畏,如果不為 null,則返回 value滩租;如果為 null赋秀, 則判斷下一個(gè) value 是否為 null……直至出現(xiàn)不為 null 的value 并返回或者返回最后一個(gè)為 null 的 value
  • CASE WHEN THEN ELSE END 條件函數(shù)

CASE WHEN THEN ELSE END 條件函數(shù)的使用

第一種寫法

SELECT
s.s_id,
s.s_name,
s.s_sex,
CASE
WHEN s.s_sex = '1' THEN '男'
WHEN s.s_sex = '2' THEN '女'
ELSE '其他'
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
1 = 1

第二種寫法

SELECT
s.s_id,
s.s_name,
s.s_sex,
CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
1 = 1

兩個(gè)運(yùn)行結(jié)果一樣:

有一個(gè)需要注意的問題,Case函數(shù)只返回第一個(gè)符合條件的值律想,剩下的Case部分將會(huì)被自動(dòng)忽略


image.png

分組

表數(shù)據(jù):

t_b_population


image.png

sql語(yǔ)句:

SELECT country,
SUM(CASE WHEN p.sex = '1' THEN p.population ELSE 0 END) AS '男',
SUM(CASE WHEN p.sex = '2' THEN p.population ELSE 0 END) AS '女'
FROM
t_b_population p
GROUP BY country;

運(yùn)行結(jié)果:


image.png

表數(shù)據(jù):

t_b_country


image.png

sql語(yǔ)句:

SELECT
SUM(c.population) AS '人口',
CASE c.country
WHEN '中國(guó)' THEN '亞洲'
WHEN '印度' THEN '亞洲'
WHEN '日本' THEN '亞洲'
WHEN '美國(guó)' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END AS '洲'
FROM
t_b_country c
GROUP BY CASE c.country
WHEN '中國(guó)' THEN '亞洲'
WHEN '印度' THEN '亞洲'
WHEN '日本' THEN '亞洲'
WHEN '美國(guó)' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;

image.png

IF(expr1,expr2,expr3) 函數(shù)的使用

SELECT
IF(1>0, '真', '假')
FROM
Table

JPA @query中使用
@query(nativeQuery = true,value = " select  * from xxx where if(?1 != '',x1 = ?1,1=1) and if(?2 != '',x2= ?2,1=1) and if(?3 != '',x3 = ?3,1=1) ")
List<xxx> find(String x1,String x2,String x3)

IF…ELSE…做為流程控制語(yǔ)句使用猎莲,語(yǔ)法格式如下:

IF search_condition THEN 
             
                RETURN()
             
            ELSEIF search_condition THEN 
             
                RETURN()
             
            ELSE 
             
                RETURN()
             
            END IF2

例如第N高薪水的完善

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  if N<0 then    
    RETURN (select min(Salary) from Employee);
  else   
    SET N = N-1;
    RETURN (
        select ifnull((select distinct Salary from Employee order by Salary desc limit N,1),null) as NthHighestSalay );
  end if;
END
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市技即,隨后出現(xiàn)的幾起案子著洼,更是在濱河造成了極大的恐慌,老刑警劉巖姥份,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭脂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡澈歉,警方通過查閱死者的電腦和手機(jī)展鸡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埃难,“玉大人莹弊,你說我怎么就攤上這事∥谐荆” “怎么了忍弛?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)考抄。 經(jīng)常有香客問我细疚,道長(zhǎng),這世上最難降的妖魔是什么川梅? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任疯兼,我火速辦了婚禮然遏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吧彪。我一直安慰自己待侵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布姨裸。 她就那樣靜靜地躺著秧倾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪傀缩。 梳的紋絲不亂的頭發(fā)上那先,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音赡艰,去河邊找鬼胃榕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瞄摊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苦掘,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼换帜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了鹤啡?” 一聲冷哼從身側(cè)響起惯驼,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎递瑰,沒想到半個(gè)月后祟牲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抖部,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年说贝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慎颗。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乡恕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俯萎,到底是詐尸還是另有隱情傲宜,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布夫啊,位于F島的核電站函卒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏撇眯。R本人自食惡果不足惜报嵌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一虱咧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沪蓬,春花似錦彤钟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至云挟,卻和暖如春梆砸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背园欣。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工帖世, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沸枯。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓日矫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绑榴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哪轿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. MySql簡(jiǎn)介 MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)椒功,由瑞典MySQL AB 公司開發(fā)撤嫩,目前屬于 Oracl...
    青年心路閱讀 232評(píng)論 0 0
  • 工作中常用函數(shù) 1.concat 函數(shù) 利用concat函數(shù)查詢一個(gè)搜索條件在多個(gè)字段進(jìn)行查詢concat函數(shù)會(huì)將...
    朦朧蜜桃閱讀 416評(píng)論 0 0
  • 一、MySQL 中的 DML 操作 1.添加數(shù)據(jù)(INSERT): (1)選擇插入: 語(yǔ)法:INSERTINTO ...
    開源oo柒閱讀 283評(píng)論 0 2
  • 1.數(shù)據(jù)庫(kù)的三范式 第一范式:是指原子性奥洼,屬性不可分割赤套,即表中的字段不可分割飘痛。所謂不可分割就是最小單位,不能再被拆...
    人間六月_閱讀 331評(píng)論 0 0
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者容握,不喜歡去冒險(xiǎn)宣脉,但是人生放棄了冒險(xiǎn),也就放棄了無數(shù)的可能唯沮。 ...
    yichen大刀閱讀 6,046評(píng)論 0 4