Конкретное сопоставление с образцом в Oracle - PullRequest
0 голосов
/ 30 января 2019

У меня есть около 1000 записей, в которых сначала есть два символа в виде алфавита, а затем количество символов.например.

 - BE123
 - QT12124
 - ST1000
 - XY12345   

и аналогичные данные .... У меня есть таблица X в Oracle, имеющая столбец «Серийный номер», в котором будут аналогичные данные, но она имеет стандартную длину 7 и также начинается с первых двухсимволы в виде алфавитов.Я хочу сделать сопоставление с образцом в столбце Серийный номер, где я могу использовать сопоставление LIKE и '%' для символов после первых двух символов в столбце, например, если в столбце есть данные

 - BE00123 , it should start give me BE123 as matched data
 - QT12124 , it is matched data
 - ST11001 , unmatched data
 - XY12345, matched data

1 Ответ

0 голосов
/ 30 января 2019

Ну, это возвращает то, что вы спросили.Посмотрите, поможет ли это.

SQL> with t_one (col) as
  2    (select 'BE123'   from dual union all
  3     select 'QT12124' from dual union all
  4     select 'ST1000'  from dual union all
  5     select 'XY12345' from dual
  6    ),
  7    t_two (col) as
  8    (select 'BE00123' from dual union all
  9     select 'QT12124' from dual union all
 10     select 'ST11001' from dual union all
 11     select 'XY12345' from dual
 12    )
 13  select o.col
 14  from t_one o join t_two t on substr(o.col, 1, 2) = substr(t.col, 1, 2)
 15                           and instr(t.col, substr(o.col, 3)) > 0;

COL
-------
BE123
QT12124
XY12345

SQL>
  • Строка 14: сопоставить первые два символа
  • Строка 15: проверить, содержатся ли символы из таблицы T_ONE, начиная с позиции 3, в T_TWOзначение столбца таблицы
...