如何实现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
相关产品推荐
相关产品推荐

