LIKE не возвращает никаких записей при использовании с SUBSTR - PullRequest
0 голосов
/ 28 марта 2019

У меня есть две таблицы:

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 ]

1 голос
/ 28 марта 2019

This:

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

Это не кажется правильным.

1 голос
/ 28 марта 2019

, если оба являются строковыми значениями,

SUBSTR (cr.start, 1, 4) равно "2017".

s.name = "2017/2018".

2 значения НЕ равны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...