MySQL中常见的函数以及常见的问题汇总
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,本篇内容介绍了"MySQL中常见的函数以及常见的问题汇总"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年02月22日MySQL中常见的函数以及常见的问题汇总
本篇内容介绍了"MySQL中常见的函数以及常见的问题汇总"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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 4)MySQL中存储超长字符串: MySQL中字段的类型设为:MEDIUMTEXT Mybatis中对应的类型为:JdbcType.LONGVARCHAR
其它:
replace into语句: 原理: replace into语句首先会判断表中是否已经存在该行数据(根据主键或唯一索引来判断),如果该行数据已存在,则删除已存在的该行数据并插入新的数据;如果该行数据不存在,则直接将数据插入。 注意: 插入数据的表必须有主键或唯一索引,否则replace into语句会直接将数据插入到表中,从而可能导致表中出现重复的数据。 如果要插入的数据已存在,那么,replace into语句的返回值为2 (受影响的行数为2) 举例: DDL: CREATE TABLE `t_site_id` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `unique_column` varchar(1) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_column` (`unique_column`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 说明: 1>t_site_id表有两列:id、unique_column,表中只有一条数据:id=1,unique_column="a" 2>执行:replace into t_site_id set unique_column="a" 后,表中的数据变成了:id=2,unique_column="a" 3>在mybatis中执行replace into语句后,可以使用@SelectKey注解来获取到自增后最新的id,从而我们可以获取到一个全局唯一(且递增)的id。 代码: @Insert({"replace into t_site_id set unique_column='a'" }) @SelectKey(before = false, keyProperty = "id", resultType = Long.class, statementType = StatementType.STATEMENT, statement = "SELECT LAST_INSERT_ID() ") public Long getNewSiteId(ReqAddSite req);
"MySQL中常见的函数以及常见的问题汇总"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
字符
字符串
函数
数据
类型
字段
结果
数字
语句
常见
格式
问题
大小
字母
空格
首字
英文
查询
位置
尾部
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
iot服务器
军团要塞2服务器怎么进去
itunes验证服务器
db2数据库性能影响因素
山西晋缘网络技术公司
北京联想服务器虚拟化部署
浪潮服务器hba安装
网络安全策划 论文
linux执行数据库
软件开发公司申请的科技创新基金
80级服务器第一 攻略
南京中软软件开发工程师薪资
电脑服务器需要休息吗
方舟生存进化山海经多人服务器
网络技术的先进性
网络安全我践行手抄报图片
无锡新品服务器价格
网络安全加固的请示
平顶山哪里学计算机网络技术专业
数据库asc从大到小排序
数据库with用法总结
1.7.2我的世界服务器
一个数字数据库用什么类型
国企软件开发工作像运维
浪潮服务器无法连接管理口
帝国cms导入数据库错误
南京中软软件开发工程师薪资
郑州苹果软件开发报价
公司创业软件开发流程
网络安全蓝色背景图片