msyql 常用函数

        前面学习了数学函数字符串函数时间函数条件加密函数,把平时比较长用的函数汇总下。

1,数学函数

1,CEIL(x)获取不小于x的最小整数

        CEIL(x)和 CEILING(x)意义相同,返回不小于x的最小整数值,返回值转化为一个BIGINT。

SELECT CEIL(-3.35), CEILING(3.35);

2,FLOOR(x)获取大于x的最大整数值

        FLOOR(x)返回不大于x的最大整数值,返回值转化为一个BIGINT。

SELECT FLOOR(-3.35), FLOOR(3.35);

3,获取随机数的函数RAND()和 RAND(x)

        RAND(x)返回一个随机浮点值v,范围在0到1之间(即0≤v≤1.0)。若已指定一个整数参数x,则它被用作种子值,用a来产生重复序列。

SELECT RAND(), RAND(), RAND();

4,ROUND(x)返回最接近于参致x的整数,对x值进行四舍五入。

SELECT ROUND(-1.14),ROUND(-1.67),ROUND(1.14), ROUND(1.66);

5,获取1-100以内的随机数

        处理:用rand()获取随机数,用floor获取整数(FLOOR()函数用来获取不大于给定数字的最大整数)

SELECT FLOOR(1 + (RAND() * 100)) AS random_number;


SELECT FLOOR(1 + (RAND() * 100)) AS random_number1,
       FLOOR(1 + (RAND() * 100)) AS random_number2,
       FLOOR(1 + (RAND() * 100)) AS random_number3;
 

2,字符串函数

1,合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)x

        CONCAT(s1,s2…)返回结果为连接参数产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL

SELECT CONCAT('My SQL','5.7'), CONCAT('My', NULL, 'SQL');

        CONCAT_WS(x,s1,s2,…),CONCAT_WS 代表CONCAT With Separator,是CONCAT()的特殊形式,第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值

SELECT CONCAT_WS('-','1st', '2nd', '3rd'), CONCAT_WS('*', '1st', NULL,   '3rd');

        如果连接值中有NULL,就用CONCAT_WS(),不然就得用ifnull()判断是否null

2,删除空格TRIM(s)

        TRIM(s)删除字符串s两侧的空格。

SELECT '( book )', CONCAT ('(', TRIM(' book '),')');

3,删除指定字符串的函数TRIM(s1 FROM s)

      从字符串中删除不需要的字符。

TRIM([{BOTH|LEADING|TRAILING} [removed_str]] FROM str);

        可以使用LEADING,TRAILING或BOTH选项明确指示TRIM()函数从字符串中删除前导,尾随或前导和尾随的不必要的字符。

        TRIM(s1 FROM s)删除字符串s 中两端所有的子字符串s1,s1为可选项,在未指定情况下,删除空格。

SELECT TRIM('xy' FROM 'xyxboxyokxxyXy');

        删除字符串末尾的换行符

SELECT TRIM(TRAILING '\r\n' FROM field_name);

        删除字符串末尾的逗号

SELECT TRIM(TRAILING ',' FROM '1007012,5005,6002005,7003,')
 AS result;

4,替换函数REPLACE(s,s1,s2)

        REPLACE(s,s1,s2)使用字符串替代字符串s中所有的字符串s1。

SELECT REPLACE('xxx.mysql.com', 'x', 'w');

5,获取子串的函数SUBSTRING(s,n,len)

        SUBSTRING(s,n,len)带有len参数的格式,从字符串s返回一个长度同 len字符相同的子字符串,起始于位置n,也可能对n使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。

 SELECT SUBSTRING('breakfast', 5) AS coll,
 SUBSTRING('breakfast', 5,3) AS co12,
SUBSTRING('lunch', -3) AS co13,
SUBSTRING('lunch', -5, 3)AS col4;

6,GROUP_CONCAT() 将多行字段数据合并为一行 

group_concat()函数可以将多行字段数据合并为一行;且内容之间可以指定分隔符;

1、默认以逗号分隔符连接

汇总员工姓名:

 SELECT GROUP_CONCAT(NAME)  FROM employee;

2、可自定义对字段去重排序和指定分隔符

1、自定义分隔符

语法:

SELECT GROUP_CONCAT(字段名 SEPARATOR '分隔符号') from 表名;

汇总员工姓名,用“|”作为分隔符:

SELECT GROUP_CONCAT(NAME SEPARATOR '|') FROM employee;

3,日期时间函数

1,DATEDIFF(date1,date2)计算两个日期相差天数

        DATEDIFF(date1,date2)返回起始时间datel和结束时间date2之间的天数。date1和 date2为日期或date-and-time表达式。计算中只用到这些值的日期部分。

SELECT DATEDIFF('2010-12-31 23:59:59', '2010-12-30') AS col1,
 DATEDIFF('2010-11-30 23:59:59', '2010-12-31')AS col23;

2,将日期和时间格式化的函数

        DATE_FORMAT(date,format)根据format指定的格式显示date值

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') AS co11,
DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j') AS co12,
DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s') AS co13,
DATE_FORMAT('1999-01-01', '%X %V') AS col4;

3,将日期和时间字符串转为日期和时间

        STR_TO_DATE('日期时间字符串', '格式') 把日期时间字符串转为时间

SELECT STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s');
SELECT STR_TO_DATE('2024-02-28', '%Y-%m-%d');
SELECT STR_TO_DATE('12:15:16', '%H:%i:%s'); 

4,条件判断函数

1,IF(expr,v1,v2)函数

        IF(expr, vl, v2),如果表达式expr是TRUE(expr > 0 and expr  NULL),则IF()的返回值为v1;否则返回值为v2。IF()的返回值为数字值或字符串值,具体情况视其所在语境而定。

SELECT IF(1>2, 2, 3),
IF(1<2, 'yes' , 'no'),
IF(STRCMP('test', 'test1'), 'no', ' yes');

2,IFNULL(v1,v2)函数

        IFNULL(v1,v2)假如vI不为NULL,则IFNULL()的返回值为vl;否则其返回值为v2。

        IFNULL()的返回值是数字或是字符串,具体情况取决于其所在的语境。

SELECT IFNULL(1,21) IFNULL(NULL,10), IFNULL(1/0, 'wrong');

3,CASE 函数.

        CASE expr WHEN v1 THEN rl [WHEN v2 THEN r2] [ELSE m] END

        该函数表示,如果expr值等于某个vn,则返回对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的m。

SELECT CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more!' END; 

        CASE WHEN v1 THEN rl [WHEN v2 THEN r2] [ELSE m] END

        该函数表示,某个vn值为TRUE时,返回对应位置THEN后面的结果,如果所有值都不

为TRUE,则返回ELSE后的m。

 SELECT CASE WHEN 1<0 THEN 'true' ELSE 'false' END;

5,加/解密函数

1,加密函数MD5(str)

        MD5(str)为字符串算出一个 MD5 128比特校验和。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL。

SELECT MD5('mypwd');


-- 加密后转成大写
SELECT UPPER(MD5('mypwd'));

MD5加密是不可逆的。

6,其他函数

1,格式化函数FORMAT(x,n)

        FORMAT(x,n)将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。

SELECT FORMAT(12332.123456,4), FORMAT(12332,1,4), FORMAT(12332,2,0);

2,改变数据类型的函数

        CAST(x , AS type)和CONVERT(x, type)函数将一个类型的值转换为另一个类型的值,可转换的type有:BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。

SELECT CAST(100 AS CHAR(2)), CONVERT('2010-10-01 12:12:12', TIME);

总结:

        把常用的函数汇总起来,把语法和作用做一个说明,下次忘记怎么用打开来就一清二楚了。函数,再处理数据,查询时间也会经常用到。 后续有遇到常用的函数,再补充。

        上一篇:《mysql 条件/系统/加密/其它函数-CSDN博客

        下一篇: 《mysql 基本查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值