SQL-запрос: возвращает, если столбец содержит подстроку

#sql #string #inner-join #sql-like

#sql #строка #внутреннее соединение #sql-подобный

Вопрос:

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

Я хочу написать запрос, в котором он отображает имя и идентификатор, если строковое значение идентификатора TableA является подстрокой имени TableB. Я попробовал оператор like, но, похоже, не могу заставить его работать.

    tableA
id   |
bob
cat
sky
   tableB
name   |
bobby
catlyn
bret

answer table
id     |name   | 
bob    bobby
cat    catlyn 
 

Комментарии:

1. отправьте свой tried запрос тоже. и СУБД.

2. Что это за движок?

3. также это неправильный способ обработки данных. у вас должны быть ключи для привязки таблицы.

4. Что именно «не работает»? Ваши результаты не совпадают с ожидаемыми? Итак, предоставьте свой запрос и его вывод. Если у вас ошибка, добавьте сообщение об ошибке в виде обычного текста.

5. Это был просто пример данных. Я попробовал что-то вроде этого «где TableB, как%tableA.id %». Но это не работает, поскольку это не строковое значение, и использование для объединения не работает.

Ответ №1:

Вы можете присоединиться при like условии:

 select a.id, b.name
from tablea a
inner join tableb b on b.name like '%' || a.id || '%'
 

Вы не указали, какую базу данных вы используете, поэтому используется стандартный оператор конкатенации || строк; некоторые базы данных используют что-то другое (например: MySQL и SQLServer имеют функцию concat() ).