MySQL-常用函数

一:字符串截取处理 

 

-- 注:mysql中处理字符串时,默认第一个字符下标为1
SELECT SUBSTRING('123456789',2)              -- 从第2位开始截取
SELECT SUBSTRING('123456789',-2)             -- 从倒数第2位开始截取
SELECT SUBSTRING('123456789',-3,2)           -- 从倒数第3位开始截取,截取长度为2
SELECT LEFT('123456789',2)                   -- left(str, length) 说明:left(被截取字段,截取长度) 
SELECT RIGHT('123456789',2)                  -- right(str, length) 说明:right(被截取字段,截取长度)                                            
SELECT SUBSTRING_INDEX("blog.jb51.net",".",2)-- 如果关键字出现的次数是正数 如2 从左边第2个开始选取左边的),如果关键字出现的次数是负数 如-2 从右边第2个开始选取右边的) 
SELECT LENGTH ("ab")                         -- string长度
SELECT CHAR_LENGTH("好茶仓")                 -- 获取中文字符串长度
SELECT REPLACE ("1211212112212" ,"1" ,"2" )  -- REPLACE (str ,search_str ,replace_str 在str中用replace_str替换search_str
SELECT CONCAT("1",SPACE(5),"1")              -- SPACE(count) 生成count个空格
SELECT INSTR("123","1")                      -- 大于0存在, INSTR(str1 in str2)返回str1中str2所在的位置索引
SELECT LOCATE("1","123",2)                   -- 大于0存在, LOCATE(str1 str2 index)返回str2中str1所在的位置索引,可多一个起始位置的参数
SELECT POSITION('3' IN '123')                -- 大于0存在, POSITION(str1 in str2)返回str2中str1所在的位置索引
SELECT FIND_IN_SET('1','1,2,3')              -- 大于0存在, find_in_set(str1,str2)返回str2中str1所在的位置索引,str2必须以","分割开
SELECT SUBSTRING_INDEX("aaa_BBB_","_",1)     -- 截取第一个符号之前的数据

 

二:日期处理函数

 

SELECT CURDATE()                              -- 获取当前日期
SELECT CURTIME()                              -- 获取当前时间
SELECT NOW()                                  -- 获取日期时间
SELECT DATE(NOW())                            -- 返回日期部分

SELECT DAYOFYEAR (NOW())                      -- 一年中的第几天
SELECT WEEK (NOW())                           -- 一年中的第几周
SELECT YEAR (NOW())                           -- 获取当前年: year(time)
SELECT MONTH(NOW())                           -- 获取当前月; month(time),monthname(time)
SELECT DAY(NOW())                             -- 获取当前天; day(time)
SELECT HOUR (NOW())                           -- 获取当前小时:hour(time)
SELECT MINUTE (NOW())                         -- 获取当前分钟:minute(time)
SELECT SECOND (NOW())                         -- 获取当前分秒:SECOND(time) 
SELECT DAYNAME(NOW())                         -- 从时间中选择出今天是周几:weekday(date),dayname(date)

SELECT SUBDATE(NOW(),1)                       -- 间减去后面的day
SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY);    -- 加一天
SELECT DATEDIFF('2018-05-22','2018-05-25');   -- 两个日期差
SELECT TIMEDIFF('12:27:46','1:25:45')         -- 两个时间差
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %k:%i:%s') -- 时间格式化函数
SELECT TIME_TO_SEC(NOW())                     -- 时间转秒数
SELECT SEC_TO_TIME (62399)                    -- 秒数转成时间
SELECT FROM_UNIXTIME(1256540102)              -- 将时间戳转换为时间

 

 三:拼接处理函数

SELECT CONCAT('','')
SELECT CONCAT('',NULL)
SELECT CONCAT_WS('_','','','')
SELECT CONCAT_WS('_','','',NULL)
-- 语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
SELECT NAME,GROUP_CONCAT(DISTINCT CONCAT_WS('-',id,`attribute_name`,`sell_price`) ORDER BY id ASC SEPARATOR ",") FROM `order_product` GROUP BY `name`

 

四:其它常用函数

 

SELECT CHAR_LENGTH("ab")     -- 获取字符串字符数函数:char_length(str)
SELECT UCASE("ab")           -- 转换大写 ucase(x)
SELECT LCASE("AB")           -- 转换小写 lcase(x)
SELECT TRIM(" abcd ")        -- 去除字符串str两边的空格
SELECT ROUND('12.356',2)     -- 四舍五入函数:round(x,y)
SELECT FORMAT('2.356',2)     -- 数字x进行格式化
SELECT STRCMP(12,10)         -- STRCMP(expr1,expr2),expr1>expr2:1,expr1=expr2:0,expr1<expr2:-1
SELECT SIGN(-12)             -- SIGN (number2 ) // 正数返回1,负数返回-1
SELECT LEAST(1,-2,3,4)       -- LEAST (number,number2 [,..]) //求最小值
SELECT 0+CAST(2.10000 AS CHAR)  -- 去除多余的0

 

五:系统信息函数

 

SELECT VERSION()       -- 函数返回数据库的版本号;
SELECT CONNECTION_ID() -- 函数返回服务器的连接数,也就是到现在为止MySQL服务的连接次数;
SELECT DATABASE()      -- 和SCHEMA()返回当前数据库名。
SELECT USER()          -- 返回当前用户的名称

 

posted @ 2018-12-11 11:46  刘杨钊  阅读(275)  评论(0)    收藏  举报