mysql语句-----函数使用

总结常用函数及使用方法

1.字符串相关函数

 

 

-- 返回字符串字符集 CHARSET(str)select charset(ename) from emp;


-- 连接字符串 CONCAT(string [,…]) select concat(ename,' job is ',job) from emp;

-- 返回 substring在string中出现的位置,没有返回0 INSTR(string,substring) -- 这里返回8,dual是亚元表、系统表,可以作为测试表使用 select instr('hanshunping','ping') from dual;

-- 转换成大写 UCASE(string2) select ucase(ename) from emp;
-- 转换成小写 LCASE(string2) select lcase(ename) from emp;

-- 从string2中的左边起取length个字符 LEFT(string2,length) select left(ename,2) from emp; -- 从string2中的右边起取length个字符 RIGHT(string2,length) select right(ename,2) from emp;

-- string长度[按照字节] LENGTH(string) -- 这里按照字节是指字母1字节,汉字比如utf8是3字节 select length(ename) from emp;

-- 在str中用replace_str替换search_str REPLACE(str,search_str,replace_str) select ename,replace(job,'MANAGER','经理') from emp;

-- 逐字符比较两字符串大小 STRCMP(string1,string2) -- 这里是1,如果第一个字符串小于第二个就是-1,相等是0 select strcmp('hsp','asp') from dual;

-- 从str的position开始【从1开始计算】,取length个字符 SUBSTRING(str,position,[,length]) -- 从ename列第一个位置开始取出2个字符(不是字节) select substring(ename,1,2) from emp;
-- 从
ename列第一个位置开始取

select substring(ename,1) from emp;

-- 去除前端空格或后端空格 LTRIM(string2) RTRIM(string2) TRIM(string2) select ltrim(' jdfijidfji') from dual; select rtrim('jdfijidfji ') from dual; select trim(' jdfijidfji ') from dual;

 2.数学相关函数

 

 

-- ABS(num)    绝对值
select abs(-10) from dual;


-- BIN(decimal_number)    十进制转二进制
select bin(10) from dual;


-- CEILING(number2)    向上取整,得到比num2大的最小整数
select ceiling(1.1) from dual;


-- CONV(number2,from_base,to_base)    进制转换
-- 8由十进制转二进制   
select conv(8,10,2) from dual;


-- FLOOR(number2)    向下取整,得到比num2小的最大整数
select floor(1.1) from dual;


-- FORMAT(number,decimal_places)    保留小数位数
-- 结果是78.12(结果四舍五入)
select format(78.1245687) from dual;


-- HEX(DecimalNumber)    转十六进制
-- 只能写整数,小数会忽略
select hex(20) from dual;


-- LEAST(number,number2[,…])    求最小值
select least(0,1,3,6) from dual;


-- MOD(numerator,denominator)    求余
-- 10%3=1
select mod(10,3) from dual;


-- RAND([seed])    RAND([seed])其范围为0≤v≤1.0
-- 生成随机数,不输入种子每次会随机生成不同随机数,输入种子会固定生成同一随机数,种子只取整数部分,小数不影响数值

 3.时间日期相关函数

 

 

-- CURRENT_DATE()    当前日期
-- 2022-10-13
select current_date from dual;
select current_date() from dual;
select curdate from dual;



-- CURRENT_TIME()    当前日期
-- 12:31:59 
select CURRENT_TIME from dual;
select CURRENT_TIME() from dual;
select CURTIME from dual;


-- CURRENT_TIMESTAMP()    当前时间戳
-- 2022-10-13 12:32:47
select CURRENT_TIMESTAMP from dual;


-- DATE(datetime)    返回datetime的日期部分
-- 2022-10-13
select date(now()) from dual; 


-- DATE_ADD(date2,INTERVAL d_value d_type)    在date2上加上日期或者时间
-- 查询10分钟之内发布的信息
select * from mes where date_add(send_time,interval 10 minute)>=now();


-- DATE_SUB(date2,INTERVAL d_value d_type)    在date2上减去日期或者时间
-- 查询10分钟之内发布的信息
select * from mes where date_sub(now(),interval 10 minute) <= send_time;

-- DATEDIFF(date1,date2)    两个日期差(结果是天)
-- 比较'2011-11-11'和'1990-01-01'相差多少天
-- 7984
select datediff('2011-11-11','1990-01-01') from dual;


-- TIMEDIFF(date1,date2)    两个时间差(差多少小时多少分钟多少秒)
-- 04:01:01
select timediff('10:11:11','06:10:10') from dual;


-- NOW()    当前时间
select now() from dual;


-- YEAR|Month|DATE(datetime)    FROM_UNIXTIME()    年月日
--- 自1970-01-01来的秒数
select year(now()) from dual;
select UNIX_TIMESTAMP from dual;


-- FROM_UNIXTIME(unix_timestamp,format)    将unix_timestamp秒数转换成执行格式,秒数实际上是数值
--2022-10-13
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d') from dual;
-- 2022-10-13 13:06:00
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d %H:%i:%s') from dual;

 

3.加密和系统函数

 

 

-- USER()    查询用户
-- root@localhost
select user() from dual;


-- DATABASE()    数据库名称
select database();


-- MD5()    为字符串算出一个MD5 32的字符串,(用户密码)加密
select MD5('hsp') from dual;


-- PASSWORD(str)    从原文密码str计算并返回密码字符串,通常用于对mysql数据库的用户密码加密
select password('hsp') from dual;

 

posted @ 2022-10-13 10:38  求道之愚者  阅读(73)  评论(0)    收藏  举报