MySQL datetime 类型操作与避坑记录
记录 datetime 字段定义、插入、格式化查询以及 Java 端类型映射、时区等问题,避免线上踩坑。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道
2026-05-27 15:39:59 MySQL LEFT函数 字符串处理 SQL技巧
最近在翻慢查询日志的时候,看到好几处用LEFT取域名前缀的处理,顺手整理一下这个函数,省得以后新同事再过来问。
LEFT的语法很简单,两个参数:第一个是原始字符串,第二个是要截的字符长度。
LEFT(string, length)
日常用得最多的场景就是从某个字段里取前几位,比如:
SELECT LEFT(w_domain, 4) AS domain_prefix FROM web_info;
这样就能拿到每个域名前4个字符。对一个固定字符串做测试也很直观:
SELECT LEFT('www.csdn.net', 5);
-- 结果是'www.c'
边界条件得特别注意一下,因为线上环境里length经常是拼接出来的,很容易踩坑。
如果length大于字符串的实际长度,函数不会报错,直接把整个字符串返回来,这一般是符合预期的。但如果传了个负数或者0进去,就会返回空字符串——有一次调试半天才发现是上游业务传了个负数,结果怎么都查不出数据。参数本身是NULL的时候,返回值也是NULL,这个很自然,但写条件判断时要记得处理,不然可能漏数据。
截取方向不只是从左往右。MySQL里还有RIGHT从右边截,以及SUBSTRING可以指定起始位置和长度。一般来说只要取左边的几位,直接用LEFT最省事,可读性也更好。
非要取中间一段,或者起始位置不固定的时候,才换成SUBSTRING。
性能方面,如果web_info这种表量比较大,直接在SELECT里用LEFT不会触发索引,但单纯取数据影响不大。真正需要留意的,是在WHERE条件里用LEFT做匹配,这时候索引就失效了,大表一跑CPU直接飙上去。如果确实有这种需求,要么给字段建个前缀索引,要么提前把截取后的值冗余存一个列。另外就是尽量别在高峰期搞全表扫描的操作,能错峰就错峰。
对一些格式固定的字符串,有时候用正则去匹配比硬截几位更灵活,可以结合着用,看具体需求。
记录 datetime 字段定义、插入、格式化查询以及 Java 端类型映射、时区等问题,避免线上踩坑。
MySQL数据库出现“Too many connections”错误,通常意味着连接数已达上限。本文将深入剖析该问题的排查步骤,包括如何查看当前连接数和详细信息。并提供一系列解决方案:从调整max_connections、设置空闲连接超时、检查应用层连接泄漏,到监控优化连接,以及修改配置后重启服务。附带PHP示例,助你有效管理数据库连接,彻底解决连接瓶颈。
MySQL SSL配置失败让人抓狂?别担心,这篇文章手把手教你排查常见问题,让你轻松搞定数据库加密连接,更有自动化工具推荐哦!
在处理海量MySQL数据时,如何高效利用REPLACE函数进行字符串替换,避免性能瓶颈?本文不仅详述REPLACE的强大功能,更聚焦于其在大型数据库操作中的性能表现与优化技巧。我们将深入探讨分批执行、索引影响、事务管理等高级策略,旨在帮助DBA和开发者在实现数据清洗、格式统一的同时,最大限度保障系统性能,确保数据操作的顺畅与高效。
从MySQL基础的用户名/密码,到8.0+版本插件化认证的革新,再至SSL证书构建的加密圣殿,本文为您揭示数据信任的完整旅程。