MySQL中常见的函数以及常见的问题汇总
发表于:2024-11-13 作者:千家信息网编辑
千家信息网最后更新 2024年11月13日,本篇内容介绍了"MySQL中常见的函数以及常见的问题汇总"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2024年11月13日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安全错误
数据库的锁怎样保障安全
武汉微信软件开发公司
fake数据库
数据库设计中概念结构设计
石家庄软件开发工资太低了
存数据库用什么
桌面软件开发 数据库查询
csv导入数据库限制行数
广东科技互联网
题库的数据库怎么建
阿里云服务器租用费用如何充值
晋中市网络安全信息化办公室
地平线4怎么连接到游戏服务器
杭州时橙网络技术
服务器文件上传最大2兆如何修改
池州软件开发要多少钱
如何更改数据库中表的数据
数据库维护用户表数据实训
公司网络技术主管竞聘
数据库yggl的er图
希捷服务器硬盘型号怎么看
联想一体机服务器如何升级
怎么购买国外的服务器
黑防服务器
侏罗纪世界的游戏服务器怎么调整
音视频的流媒体软件开发
大学生人网络安全ppt
求生之路本地服务器加载不了
江西省百万网民学法律网络安全
数据库连接方式错误
尾翼数据库