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;
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号