You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现MariaDB中LIKE语句自动匹配当前年份?语法问题求助

自动匹配当前年份的SQL查询问题

month.ty字段的数据类型为text,原本的查询语句是:

month.ty LIKE '%2024%'

想要实现无需年末手动修改年份,自动匹配当前年份的效果,但尝试了几种写法都有问题:

  • 用加号拼接字符串:

    month.ty LIKE '%' + YEAR(current_timestamp) + '%'
    

    报错信息:Warning: #1292 Truncated incorrect DOUBLE value: '%'

  • 去掉通配符直接匹配:

    month.ty LIKE YEAR(CURRENT_TIMESTAMP)
    

    无结果返回,推测是缺少通配符%导致无法匹配。

  • 尝试CAST转换年份类型后拼接:

    month.ty LIKE '%' + CAST(year(CURRENT_TIMESTAMP) AS varchar) + '%'
    

    报错信息:#1064 - You have an error in your SQL syntax;

  • 用GETDATE()获取时间:

    month.ty LIKE '%' + YEAR(GETDATE()) + '%'
    

    报错信息:#1558 - Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100421. Please use mysql_upgrade to fix this error

解决方案

MySQL/MariaDB中字符串拼接不能用+,要使用CONCAT()函数,正确的查询语句应该是:

month.ty LIKE CONCAT('%', YEAR(CURRENT_TIMESTAMP), '%')

另外,MariaDB也支持字符串插值写法,效果相同:

month.ty LIKE '%${YEAR(CURRENT_TIMESTAMP)}%'

补充说明:最后一个GETDATE()的报错,一是因为MariaDB中没有GETDATE()函数,要替换成CURRENT_TIMESTAMP或NOW();二是mysql.proc表结构不匹配的问题,需要执行mysql_upgrade命令修复,但这和查询逻辑无关。

内容的提问来源于stack exchange,提问作者Beansolder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:17:47