MySql 內置函數

日期函數

函 數 功 能 描 述
current_date() 獲取當前年月日
current_time() 獲取當前時分秒
current_timestamp() 獲取當前時間戳
date(datetime) 返回datetime參數的日期部分
date_add(date, interval d_value_type) 在date中添加日期,單位可以是year、day、minute、second
date_sub(date, interval d_value_type) 在date中減去日期,單位可以是year、day、minute、second
datediff(date1, date2) 兩個日期的差,單位是day
now() 當前日期時間

年月日
select current_date();

時分秒
select current_time();

時間戳
select current_timestamp();

在日期的基礎上加時間
select date_add(‘2017-10-28’, interval 10 day);

在日期的基礎上減時間
select date_sub(‘2017-10-1’, interval 2 day);

計算兩個日期之間相差多少天
select datediff(‘2017-10-10’, ‘2016-9-1’);

案例1:
創建一張表,記錄生日(將當前日期添加進表)
create table tmp( id int primary key auto_increment, birthday date );
insert into tmp(birthday) values(current_date());

案例2
創建一個留言表,並插入兩條數據
create table msg ( id int primary key auto_increment, content varchar(30) not null, sendtime datetime );

mysql> insert into msg(content,sendtime) values(‘hello1’, now());
mysql> insert into msg(content,sendtime) values(‘hello2’, now());

顯示所有留言信息,發佈日期只顯示日期,不用顯示時間
select content,date(sendtime) from msg;

請查詢在2分鐘內發佈的帖子
select * from msg where date_add(sendtime, interval 2 minute) > now();

字符串函數

函 數 函 數 功 能
charset(str) 返回字符串字符集
concar(string1, …) 連接字符串
ucase(string) 轉換爲大寫
lcase(string) 轉換爲小寫
length(string) string 長度
replace(str, serch_str, replace_str) 在 str 中用 replace_str 替換 serch_str
strcmp(str1, str2) 比較兩個字符串大小
substring(str, position, length) 從 str 的 position 開始取出 length 個字符長度

創建一張學生表

CREATE TABLE students (
name VARCHAR(20) NOT NULL,
cla VARCHAR(10) NOT NULL,
chinese INT,
math INT,
english INT
);

插入數據

INSERT INTO students VALUES (‘白龍馬’, ‘c++大神班’, 100, 83, 60);
INSERT INTO students VALUES (‘猴哥’, ‘java大牛班’, 73, 88, 59);
INSERT INTO students (name, cla, chinese, math, english) VALUES
(‘豬悟能’, ‘c++大神班’, 88, 98, 90),
(‘曹孟德’, ‘java大牛班’, 82, 84, 67),
(‘趙雲’, ‘小白班’, 75, 65, 30),
(‘劉玄德’, ‘java大牛班’, 55, 85, 45),
(‘孫權’, ‘c++大神班’, 70, 73, 78),
(‘宋公明’, ‘c++大神班’, 75, 65, 30),
(‘曹操’, ‘小白班’, 75, 65, 30);

獲取表中cla列的字符集
select charset(cla) from students;

要求顯示student表中的信息,顯示格式: “XXX的語文是XXX分,數學XXX分,英語XXX分”
select concat(‘姓名:’, name, ’ 班級:’, cla, ’ 語文:’, chinese, ’ 數學:’, math, ’ 英語:’, english) as ‘成績’ from students;

求學生表中學生姓名佔用的字節數
select length(name) from students;

將cla字段小寫替換爲大寫顯示 c -> C java -> JAVA
select name, replace(cla, ‘c’, ‘C’) from students; select name, replace(cla, ‘java’, ‘JAVA’) from students;

截取name字段,姓氏部分
select substring(name, 0, 1) from students;

大寫顯示cla字段的首字母
select name,ucase(cla) from students;

數學函數

函 數 函 數 功 能
abs(number) 絕對值函數
bin(decimal_number) 十進制轉換爲二進制
hex(decimal_number) 十進制轉換爲十六進制
ceiling(number) 向上去整
floor(number) 向下去整
format(number, decimal_palces) 格式化,保留 decimal_palces 位小數(四捨五入)
rand() 返回隨機數,範圍 [0.0, 1.0)
mod(number, denominator) 取模求餘

-100.2 絕對值
select abs(-100.2);

23.04 向上取整
select ceiling(23.04);

23.7 向下取整
select floor(23.7);

12.3456 保留兩位小數,四捨五入
select format(12.3456, 2);

產生隨機數
select rand();

其它函數

函 數 函 數 功 能
user() 獲取當前用戶
md5(str) 對一個字符串取 md5 摘要
database() 顯示當前正在使用的數據庫
password(str); 進行加密
ifnull(val1, val2) 如果 val1 爲 null,返回 val2,否則返回 val1 的值

查詢當前用戶
select user();

對一個字符串’haha’進行md5摘要,摘要後得到一個32位字符串
select md5(‘haha’);

顯示當前正在使用的數據庫
select database();

ifnull(val1, val2) 如果val1爲null,返回val2,否則返回val1的值
select ifnull(null, ‘22222’); select ifnull(‘11111’, ‘22222’);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章