如何在CURDATE中使用CONTAINS?

时间:2019-03-22 11:47:38

标签: mysql sql date

我有一个包含以下值的表:

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行附近的语法错误

1 个答案:

答案 0 :(得分:2)

您可以使用LIKE使用以下解决方案:

SELECT * FROM table_name WHERE name LIKE CONCAT('%', YEAR(CURDATE()), '%');

使用INSTRLOCATE的另一种解决方案:

-- 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());

demo on dbfiddle.uk

  

注意:MySQL上没有函数CONTAINS用于搜索另一个字符串中的一个字符串。 CONTAINS is a keyword on MySQLcan be used for spatial data(早期的MySQL 8.0-自MySQL 5.7.6起不推荐使用)。