У меня следующая проблема:
Мне нужно идентифицировать последнее вхождение любой подстроки, приведенной в таблице A, и вернуть это заданное значение в ответ в операторе выбора другого оператора.Это немного запутанно, но вот код:
SELECT TRIM(COUNTRY_CODE)
FROM (
SELECT TOP 1 POSITION( PHRASE IN MY_STRING) AS PHRASE_LOCATION, CODE
FROM REFERENCE_TABLE -- Where the country list is located
WHERE PHRASE_LOCATION > 0 -- To return NULL if there is no matches
ORDER BY 1 DESC -- To get the last one
) t1
Это работает, когда запускается само собой, но у меня большие проблемы с его работой как часть выбора других запросов.Мне нужно, чтобы "MY_STRING" пришел с более высокого уровня во вложенной выборке три.Это объясняется тем, как система разработана на более высоком уровне.
Другими словами, мне нужно следующее:
- PHRASE исходит из таблицы, в которой есть фразы и связанный код
- MY_STRING используется на более высоком уровневыберите и мне нужно связать с ним код, основанный на последней фразе
- Количество разных фраз> 400, поэтому не нужно жестко кодировать: (
- Количество разных «MY_STRING»> 1 000000 / день
До сих пор я пробовал то, что вы видите выше, но из-за ограничений системы я не могу быть креативным.
Example Phrases: "New York", "London", "Oslo"
Example Codes: "US", "UK, "NO"
Example Strings: "London House, Something street, New York"; "Some street x, 0120, OSL0".
Desired Outcomes: "US"; "NO"