我有一个包含以下值的表:
id | competition_id | season_id | name | update_at
1 5 512 2018/2019 2019-03-22 08:55:22
2 5 NULL Venezuela NULL
3 5 85 2017/2018 2019-02-15 08:55:22
4 5 NULL 90' NULL
5 5 72 2016/2017 NULL
我需要返回name
列中具有当前年份的所有记录,所以我这样做了:
SELECT * FROM mytable WHERE name CONTAINS YEAR(CURDATE())
但是我得到了
SQL查询“ CONTAINS YEAR(CURDATE())LIMIT 0,25”第1行附近的语法错误
答案 0 :(得分:2)
您可以使用LIKE
使用以下解决方案:
SELECT * FROM table_name WHERE name LIKE CONCAT('%', YEAR(CURDATE()), '%');
-- using INSTR
SELECT * FROM table_name WHERE INSTR(name, YEAR(CURDATE())) > 0;
-- using LOCATE
SELECT * FROM table_name WHERE LOCATE(YEAR(CURDATE()), name) > 0;
您还可以通过REGEXP
使用以下解决方案:
SELECT * FROM table_name WHERE name REGEXP YEAR(CURDATE());
注意:MySQL上没有函数
CONTAINS
用于搜索另一个字符串中的一个字符串。CONTAINS
is a keyword on MySQL和can be used for spatial data(早期的MySQL 8.0-自MySQL 5.7.6起不推荐使用)。