博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL中常见的函数&常见的问题
阅读量:5881 次
发布时间:2019-06-19

本文共 3312 字,大约阅读时间需要 11 分钟。

hot3.png

MySQL中常见的函数:

if语句:	格式:IF(Condition,A,B)	说明:当Condition为TRUE时,返回A;当Condition为FALSE时,返回B。case when语句:	举例:	SELECT t.message_id,t.title,	CASE 		WHEN TO_DAYS(t.date)= TO_DAYS(NOW()) THEN '今天' 		WHEN TO_DAYS(t.date)= (TO_DAYS(NOW())-1) THEN '昨天' 		ELSE date_format(t.date,'%Y-%m-%d') 	END AS datestr	FROM t_message t	字符串截取/连接函数:	CONCAT函数:		格式:			CONCAT(columnName1,columnName2,'otherString')		说明:返回一个字符串结果,该结果由参数中的值连接(不使用分隔符)而成,如果某一个参数为NULL ,则返回值为NULL。		GROUP_CONCAT函数:		格式:			GROUP_CONCAT(columnName)			GROUP_CONCAT(columnName SEPARATOR ';')		说明:返回一个字符串结果,该结果由分组中的(columnName列的)值用分隔符(默认为英文逗号)拼接而成。	RIGHT函数		格式:right(str, length)		说明:返回字符串str最右面的length个字符。	INSTR函数		格式:INSTR(str,substr) 		说明:返回子串substr在字符串str中第一个出现的位置,位置从1开始计算。若在str中找不到substr则返回0。		补充:			LOCATE(substr,str,pos):返回子串substr在字符串str中从pos开始第一个出现的位置。如果substr不是在str里面,返回0。	SUBSTRING函数		格式:substring(str, pos, length);		说明:截取字符串。从pos开始,截取length长度。		字符串替换函数:	举例:将content字段值中的'{URL}'替换为download_url字段的值。	select t.id, t.title, replace(content,'{URL}',t.download_url) from t_helpcenter t		时间函数:	函数:		NOW()									eg:2018-03-19 19:18:55		CURDATE()								eg:2018-03-19		DATE_SUB(CURDATE(), INTERVAL 7 day)		eg:若今天是2018-03-19,则结果为2018-03-12		DATE_SUB(CURDATE(), INTERVAL 1 week)	eg:若今天是2018-03-19,则结果为2018-03-12		DATE_SUB(CURDATE(), INTERVAL 1 month)	eg:若今天是2018-03-19,则结果为2018-02-19		DATE_SUB(CURDATE(), INTERVAL 1 year)	eg:若今天是2018-03-19,则结果为2017-03-19		DATE_FORMAT(CURDATE(), '%Y%m')			eg:201803		quarter(NOW())							eg:若今天是2018-03-19(3月属于第1季度),则结果为1		year(NOW())								eg:2018			举例:		今天:	SELECT * FROM t_advertise_message WHERE TO_DAYS(update_time) = TO_DAYS(NOW())		昨天:	SELECT * FROM t_advertise_message WHERE TO_DAYS(update_time) = TO_DAYS(NOW()) -1		7天内:	SELECT * FROM t_advertise_message WHERE DATE(update_time) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)		本月:	SELECT * FROM t_advertise_message WHERE DATE_FORMAT(update_time,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m')		本季度:SELECT * FROM t_advertise_message WHERE quarter(update_time) = quarter(NOW())		本年度:SELECT * FROM t_advertise_message WHERE year(update_time) = year(NOW())		 将字符串转换为时间的函数:str_to_date('2000-05-24 14:00:00', '%Y-%m-%d %H:%i:%s')

MySQL中常见的问题:

1)MySQL关于查询条件中:字符串类型的值忽略英文字母的大小写以及字符串尾部包含空格的问题	举例:MySQL中执行下面3条查询语句,查询出来的结果完全相同。		SELECT * FROM t_accounts WHERE account= "xiaoning"		SELECT * FROM t_accounts WHERE account= "XiaoNing"		SELECT * FROM t_accounts WHERE account= "xiaoning "			分析:		1)MySQL对CHAR或VARCHAR类型的值进行比较(=)时,会忽略字符串中英文字母的大小写以及尾部的空格		2)对CHAR和VARCHAR类型的值进行LIKE查询时,会忽略英文字母的大小写,但是不会忽略字符串尾部的空格	解决方案:		SELECT * FROM t_accounts WHERE account= BINARY "xiaoning"	或	SELECT * FROM t_accounts WHERE BINARY account= "xiaoning"		SELECT * FROM t_accounts WHERE account= BINARY "XiaoNing"	或	SELECT * FROM t_accounts WHERE BINARY account= "XiaoNing"		SELECT * FROM t_accounts WHERE account= BINARY "xiaoning "	或	SELECT * FROM t_accounts WHERE BINARY account= "xiaoning "			说明:		1>BINARY不是函数,是类型转换运算符		2>BINARY强制将后面的字符串转换为一个二进制的字符串,可以理解为在字符串比较的时候区分英文字母的大小写以及空格,即精确匹配。		2)对varchar类型的字段和数字进行比较时,mysql会把varchar转换为数字:	举例:		当varchar类型字段的首字符为非数字时(eg:asdf),该字段会被转换为数字0;		当varchar类型字段的首字符为数字0时(eg:0abcd),该字段会被转换为数字0;			eg:varchar类型字段=0 	只能排除首字符为非数字0的字符串		同理:varchar类型字段=1 	只能排除首字符为非数字1的字符串					3)在MySQL客户端中查看MySQL的安装目录:	SELECT @@basedir AS MySqlDir FROM DUAL

转载于:https://my.oschina.net/u/1399755/blog/1647404

你可能感兴趣的文章
view视图总结
查看>>
oracle11g 数据库导出报“ EXP-00003:
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
可解释的机器学习
查看>>
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
iOS UITableView表视图滚动隐藏UINavigationController导航栏
查看>>
SDL如何嵌入到QT中?!
查看>>
$(document).ready()
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>