mysql 学习系列 字符串
更新时间:2023-06-09 08:41:01 阅读量: 实用文档 文档下载
- mysql推荐度:
- 相关推荐
本文讲述MySql5.x中最常用的一些函数,包括控制流程函数、字符串函数、数值函数、日期和时间函数,对不常用的函数略去不讲,以便开发人员查阅。
一. 控制流程函数
1.CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
该语句用于在不同情况时,执行不同的语句,实例如下:
Eg1. SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
输出:true
Eg2. SELECT CASE BINARY 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
输出:NULL
2.IF(expr1,expr2,expr3)
如果expr1返回true,则该表达式返回expr2,否则返回expr3。
Eg1. SELECT IF(1<2,'yes ','no');
输出:'yes '
Eg2. SELECT IF(STRCMP('test','test1'),'no','yes');
上例中STRCMP(expr1, expr2)这个函数在expr1小于expr2时,返回-1,相等时返回0,其余的情况返回1,在上例中返回-1,因此上例的输出为:'yes'
3.IFNULL(expr1,expr2)
该函数在expr1为NULL时,返回expr2,否则,返回expr1。
Eg1. SELECT IFNULL(1,0);
输出:1
Eg2. SELECT IFNULL(NULL,10);
输出:10
4.NULLIF(expr1,expr2)
如果expr1=expr2,则返回NULL,否则,返回expr1。
Eg1. SELECT NULLIF(1,1);
输出:NULL
Eg2. SELECT NULLIF(3,4);
输出:3
二. 字符串函数
1. ASCII(str)
返回值为字符串str 的最左字符的数值。假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。
Eg1. SELECT ASCII('2');
输出:50
Eg2. SELECT ASCII('de');
输出:100
2. CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。
Eg1. SELECT CONCAT('Hello', ',', '阿蜜果');
输出:'Hello, 阿蜜果'
Eg2. SELECT CONCAT('Hello', NULL, '阿蜜果');
输出:NULL
3. CONCAT_WS(separator,str1,str2,...)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的NULL值。
Eg1. SELECT CONCAT_WS(',', 'Hello', '阿蜜果');
输出:'Hello, 阿蜜果'
Eg. SELECT CONCAT_WS(',', 'Hello', NU
LL, '阿蜜果');
输出:'Hello, 阿蜜果'
4. INSERT(str,pos,len,newstr)
返回字符串 str, 其子字符串起始于 pos位置和长期被字符串 newstr取代的len字符。 如果pos超过字符串长度,则返回值为原始字符
串。 假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。
Eg1. SELECT INSERT('hello,Amigo', 7, 5, 'Locus');
输出:hello,Locus
5. INTER(str, substr)
返回字符串 str中子字符串的第一个出现位置。
Eg1. SELECT INSTR('hello,Amigo', 'Amigo');
输出:7
6. LENGTH(str)
返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节。
Eg1. SELECT LENGTH('Amigo');
输出:5
7. LOWER(str)
返回字符串 str以及所有根据最新的字符集映射表变为小写字母的字符。
Eg1. SELECT LOWER('AMIGO');
UPPER(str)函数的用法与此类似,在此不再赘述。不过它是将字符串转换为大写的。
输出:amigo
8. LPAD(str, len, padstr)
返回字符串 str, 其左边由字符串padstr 填补到len字符长度。假如str 的长度大于len, 则返回值被缩短至len字符。
Eg1. SELECT LPAD('hi',4,'!!');
输出:'!!hi'
Eg2. SELECT LPAD('hi',1,'!!');
输出:'h'
RPAD(…)函数用法与此类似,在此不再赘述。
9. REPEAT(str,count)
返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count。 若 count <= 0,则返回一个空字符串。若str或count 为 NULL,则返回NULL。
Eg1. SELECT REPEAT('Amigo', 2);
输出:'AmigoAmigo'
10. SUBSTRING(str,pos), SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。
Eg1. SELECT SUBSTRING('hello,Amigo',6);
输出:Amigo
Eg2. SELECT SUBSTRING('hello,Amigo', 6, 4);
输出:Amig
三. 数值函数
1. ABS(X)
返回X的绝对值。
Eg1. SELECT ABS(-5);
输出:5
2. FLOOR(X)
返回不大于X的最大整数值 。
Eg1. SELECT FLOOR(2.56);
输出:2
Eg2. SELECT FLOOR(-2.56)
输出:-3
3. MOD(N,M) , N % M N MOD M
模操作。返回N 被 M除后的余数。
Eg1. SELECT MOD(237, 10);
输出:7
Eg2. SELECT 237 % 10;
输出:7
Eg3. SELECT 237 MOD 10;
输出:7
4. PO
W(X, Y),POWER(X, Y)
返回X的Y乘方的结果值。
Eg1. SELECT POW(2, 3);
输出:8
Eg2. SELECT POWER(2, 4)
输出:16
5. RAND(),RAND(N)
返回一个随机浮
点值 v,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N,则它被用作种子值,用来产生重复序列。
Eg1. SELECT RAND(20);
输出:0.15888261251047
Eg2. SELECT RAND();
输出:0.9233482386203
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:
SELECT FLOOR(7 + (RAND() * 6));
6. ROUND(X),ROUND(X,D)
返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D 位,可将 D 设为负值。
Eg1. SELECT ROUND(-1.23);
输出:-1
Eg2. SELECT ROUND(2.56);
输出:3
7. SQRT(X)
返回非负数X的二次方根,如X为NULL时,返回NULL。
Eg1. SELECT SQRT(4);
输出:2
Eg2. SELECT SQRT(-4);
输出:NULL
四. 日期和时间函数
1. ADDDATE(date,INTERVAL expr type),ADDDATE(expr,days)
当被第二个参数的INTERVAL格式激活后, ADDDATE()就是DATE_ADD()的同义词。相关函数SUBDATE()则是DATE_SUB()的同义词。
Eg1. SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
输出:'1998-02-02'
Eg2. SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
输出:'1998-02-02'
2. CURDATE()
将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
Eg1. SELECT CURDATE();
输出:'2008-01-01'
Eg2. SELECT CURDATE() + 0;
输出:20080101
3. CURTIME()
将当前时间以'HH:MM:SS'或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
Eg1. SELECT CURTIME();
输出:'15:15:26'
4. DATE(expr)
提取日期或时间日期表达式expr中的日期部分。
Eg1. SELECT DATE('2007-12-31 23:59:59');
输出:'2007-12-31'
5. DATEDIFF(expr, expr2)
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
Eg1. SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
输出:1
Eg2. SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
输出:-31
6. DAYOFMONTH(date)
返回date 对应的该月日期,范围是从 1到31。
Eg1. SELECT DAYOFMONTH('2008-01-05');
输出:5
7. MONTH (time)
返回dat
e对应的月份,范围时从 1 到 12。
Eg1. SELECT MONTH('2007-01-05');
输出:1
8. HOUR(time)
返回time 对应的小时数。对于日时值的返回值范围是从 0 到 23 。
Eg1. SELECT HOUR('11
:47:1');
9. MINUTE(time)
返回 time 对应的分钟数,范围是从 0 到 59。
Eg1. SELECT MINUTE('2007-01-05 11:51:23);
输出:51
10. SECOND(time)
返回time对应的秒数, 范围是从 0到59。
Eg1. SELECT SECOND('11:56:43);
输出:43
11. LAST_DAY(date)
获取一个日期或日期时间值,返回该月最后一天对应的值。若参数无效,则返回NULL。
Eg1. SELECT LAST_DAY('2008-02-01');
输出:29
12. NOW()
返回当前日期和时间值,其格式为 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具体格式取决于该函数是否用在字符串中或数字语境中。
Eg1. SELECT NOW();
输出:'2007-01-05 11:54:30'
13. SUBDATE(date,INTERVAL expr type) ,SUBDATE(expr,days)
当被第二个参数的 INTERVAL型式调用时, SUBDATE()和DATE_SUB()的意义相同。对于有关INTERVAL参数的信息, 见有关 DATE_ADD()的讨论。
Eg1. SELECT SUBDATE('2008-01-05', INTERVAL 31 DAY);
输出:2007-12-05
14. SYSDATE()
返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS, 具体格式根据
函数是否用在字符串或数字语境而定。
在一个存储程序或触发器中, SYSDATE()返回其执行的时间, 而非存储成都或触发语句开始执行的时间。这个NOW()的运作有所不同。
Eg1. SELECT SYSDATE();
输出:2008-01-05 12:01:41
正在阅读:
mysql 学习系列 字符串06-09
通力电梯故障分析 - 图文03-11
2015下半年江苏省幼儿《综合素质》教师资格考试考试大纲12-06
在傅山故里文史资料征集座谈会上的讲话11-11
电子商务发展现状问题及前景01-22
中国未来十年经济的十大预测07-26
发改价格〔2015〕299号05-28
传染病的预防(1)教案06-08
道路运输应急救援预案 - 图文03-13
相似三角形反A测试11-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 字符串
- 系列
- 学习
- mysql
- 2016年中国传媒大学713传播历史与理论之《传播理论:起源、方法与应用》考研内部冲刺密押卷
- 过程质量提升新闻稿
- ATA100 中英文对照版
- 武大分子生物学考研历年真题
- 2015江西银行校园招聘银行校园招聘考试用书详解
- 霍尔效应测磁感应强度
- 2016年陕西政法干警考试每日一练习题(5.17)
- QTSEQ800FH取力器使用说明书
- 华信洋浦石油储备基地项目施工组织设计(1)
- 《安全生产专项整治方案》
- 韩剧《制作人》经典语录台词
- 豫北地区不同时期冬小麦品种产量性状分析
- 地铁自动售票系统VHDL
- 《后砌墙与剪力墙接缝处抹灰开裂修复方案1》
- 气象农业生态环境服务提升策略建议
- 2013年咸宁市中考化学、生物试卷及答案
- 济南电子路考完整版
- 腰鼓活动记录(2016 上)
- 算法设计与分析学习心得
- 假期社会实践报告科-九年制义务教育现状调查