В существующем утверждении ниже я сравниваю host_name и ip_adress с записями, полученными из другой таблицы, и помечаю столбец как истинный, когда он найден, но я хотел бы настроить его, чтобы дать истинный результат, когда host_name также является частью идентификатора из запись получена т.е.
host_name=abc
identifier=abc.google.com should also be true
CASE
WHEN
(
(`inv_y`.`host_name` <> '')
AND
`inv_y`.`host_name` IN (SELECT `inv_x`.`identifier`
FROM `inv_x`
ORDER BY `inv_x`.`creation_date` DESC
)
)
OR
(
(`inv_y`.`ip_address` <> '')
AND
inv_y`.`ip_address` IN (SELECT `inv_x`.`identifier`
FROM `inv_x`
ORDER BY `inv_x`.`creation_date` DESC
)
)
THEN
'True'
ELSE
'False'
END
полезны образцы данных и вывод
Отступы имеют значение для такого кода, то, что вы вставили сюда, чрезвычайно трудно читать. Поэтому я изменил макет, чтобы он был более читабельным.
Ваш "вопрос" не описывает, с какими проблемами вы сталкиваетесь, или на самом деле Задайте вопрос ... Почему то, что вы нам показываете, не работает? Что он должен делать и что он делает на самом деле? Можете ли вы продемонстрировать проблему на примерах? stackoverflow.com/help/mcve
@MatBailie Проблема, с которой я столкнулся, заключается в том, что не совпадает частичное совпадение идентификатора






Похоже, вы могли бы воспользоваться функцией EXISTS. Что-то вроде следующего может сработать:
SELECT CASE WHEN EXISTS(SELECT 1
FROM inv_y
WHERE (ip IN (SELECT identifier
FROM inv_x)
OR hostname IN (SELECT identifier
FROM inv_x))
AND hostname LIKE '%eb%'
) = 1 THEN "True"
ELSE "False"
END AS Present;
Вот демонстрация этой работы: SQL Fiddle
Обратите внимание, что приведенное выше можно упростить еще больше, если вы можете работать с 1 или 0 вместо true или false. EXISTS возвращает 1, если строка найдена, и 0, если нет, а CASE просто переводит это в «Истина» или «Ложь», чтобы вы могли просто иметь следующее:
SELECT EXISTS(SELECT 1
FROM inv_y
WHERE (ip IN (SELECT identifier
FROM inv_x)
OR hostname IN (SELECT identifier
FROM inv_x)
)
AND hostname LIKE '%eb%') AS Present;
Расскажите, пожалуйста, подробнее о том, чего вы здесь пытаетесь достичь?