Oracle объединяет таблицы, в которых процесс сопоставления начинается после определенных цифр - PullRequest
0 голосов
/ 26 сентября 2018

Я объединил две таблицы, которые содержат слова и значения.Соответствие слов работает.Соответствия значений нет.Причина в том, что значения в таблице «GATTUNGSDATEN» всегда начинаются с 4 нулей, тогда как в таблице BONDMAPPING нет.Например, 00001234 = 1234. Какой запрос можно использовать для запуска процесса сопоставления после 4 цифр?

select MET_SEC_INDEX_GATTUNGSDATEN.ranl, MET_SEC_INDEX_GATTUNGSDATEN.vvranlwx, 
V_AR_BONDMAPPING.MUREXEXTERNALID

from V_AR_BONDMAPPING

RIGHT JOIN MET_SEC_INDEX_GATTUNGSDATEN

ON V_AR_BONDMAPPING.MUREXEXTERNALID = MET_SEC_INDEX_GATTUNGSDATEN.ranl IN 
('%%%%')

where vvranlwi=34

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Если вы знаете длину идентификаторов, вы можете заполнить более короткий идентификатор начальными нулями

select lpad(1234, 8, '0') from dual
=>
00001234

select lpad('00001234', 8, '0') from dual
=>
00001234

Однако это неявно преобразует числа в VARCHAR2, что, с другой стороны, будет происходить в любом случае во времясравнение

0 голосов
/ 26 сентября 2018

Если это всегда четыре ведущих нуля, вы можете использовать SUBSTR ():

from V_AR_BONDMAPPING
RIGHT JOIN MET_SEC_INDEX_GATTUNGSDATEN
    ON V_AR_BONDMAPPING.MUREXEXTERNALID =  substr(MET_SEC_INDEX_GATTUNGSDATEN.ranl, 5) 

Это обрезает первые четыре символа из MET_SEC_INDEX_GATTUNGSDATEN.ranl

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