Я пытаюсь проанализировать строку, чтобы увидеть, отображаются ли значения из другой таблицы в ней в любой позиции.SQL: Как проверить строку для нескольких значений из другой таблицы
select ROUTE,
case when ROUTE like '%' || b.AIRPORTCODE || '%' then 1
else 0 end as CLASS_B,
case when ROUTE like '%' || c.AIRPORTCODE || '%' then 1
else 0 end as CLASS_C
from FLIGHT_MESSAGE,
(select * from CLASS_B_C_AIRPORTS where CLASS_B_C = 'B') b,
(select * from CLASS_B_C_AIRPORTS where CLASS_B_C = 'C') c
В таблице CLASS_B_C_AIRPORTS будет иметь код аэропорта (KDCA) и является ли он или нет «B» или «C».
В моем примере ROUTE поле будет содержать строку текста, как:
KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127
Для этой строки, я хотел бы вернуться следующим, потому что KDCA класса В аэропорте и KRIC является Класс C:
| ROUTE | CLASS_B | CLASS_C |
----------------------------------------------------------------------
| KDCA..FLUKY.DCA246.PAUKI..MOL.FLCON6.KRIC/0127 | 1 | 1 |
Этот запрос в настоящее время возвращает 0 для класса B и класса C в отношении этой строки.
Итак, что же «1» представляют в результатах? 1 = true, 0 = false? (есть как минимум один код аэропорта CLASS_B в вашей строке и хотя бы один аэропорт CLASS_C)? Или они ** подсчитывают ** коды аэропортов CLASS_B и CLASS_C во входной строке? – mathguy
Кроме того, как вы планируете избегать проблемы с «матерью в маме ** apy»? Что делать, если ваша строка ввода имеет подстроку MVFA, и есть аэропорт CLASS_B с кодом VFA или MVF? – mathguy