与SUBSTR一起使用时,LIKE不返回任何记录

时间:2019-03-28 19:22:53

标签: mysql sql

我有两个表:

coach_career

coach_id | start      | end 
  483368   2017-01-01   NULL

competition_seasons

coach_id     | name 
   483368      2017/2018

我写了查询:

 SELECT * FROM coach_career cr
          INNER JOIN competition_seasons s
          ON SUBSTR(cr.start, 1, 4) = s.name
          WHERE cr.id = 483368

基本上,我需要返回在start中具有name字段competition_season的年份的教练,我使用SUBSTR仅提取年份,即问题是此查询不返回任何记录。

2 个答案:

答案 0 :(得分:1)

如果都是字符串值,

SUBSTR(cr.start,1,4)等于“ 2017”。

s.name =“ 2017/2018”。

两个值不相等。

答案 1 :(得分:1)

此:

SELECT * FROM coach_career cr 
INNER JOIN competition_seasons s
ON s.name LIKE concat('%', SUBSTR(cr.start, 1, 4), '%')
WHERE cr.id = 483368
name包含值start时,

将联接表。
如果start的数据类型为date,请使用date_format()提取年份,如下所示:

SELECT * FROM coach_career cr 
INNER JOIN competition_seasons s
ON s.name LIKE concat('%', date_format(cr.start, '%Y'), '%')
WHERE cr.id = 483368

您确定要使用该条件吗?

WHERE cr.id = 483368

这似乎不正确。