Oracle SQL выбирает конечное значение одного столбца таблицы, аналогичное значению, из другого столбца таблицы, содержащего значение минус 1 цифра

#sql #oracle #inner-join #sql-like

#sql #Oracle #внутреннее соединение #sql-подобный

Вопрос:

В базе данных Oracle у меня есть 1 столбец таблицы db1, который содержит известное значение1, например: 4649843545945894537, и в этой базе данных есть еще 2-я таблица DB, которая содержит столбец со значением 1-й таблицы DB плюс 1 случайная цифра, которая является полным значением (value2) для этого числа ионо уникально. Например, полное значение2 2-й таблицы: 4649843545945894537 4 Итак, используя SQL, мне нужно найти полное значение2 числа во 2-й таблице, выбрав известное значение1 из 1-й таблицы и используя «like», чтобы найти полное уникальное значение2 во 2-й таблице. Итак, нужно, чтобы SQL был чем-то вроде (псевдокод / SQL):

 select value2 from table2 where value2 like '$(value1)%';
 

Итак, в нашем примере, должно быть переведено в следующее:

 select value2 from table2 where value2 like '4649843545945894537%';
 

которое должно возвращать для значения2 4649843545945894537 4
Надеюсь, это понятно, что мне нужно.
Спасибо.

Ответ №1:

Кажется, вы хотите join :

 select t1.value1, t2.value2
from t1
inner join t2 on t2.value2 like t1.value1 || '_'
 

Это позволяет использовать только один дополнительный символ в конце value2 .

Предполагается, что ваши значения являются строками. Если вместо этого у вас есть числа, я бы рекомендовал арифметику:

 select t1.value1, t2.value2
from t1
inner join t2 on floor(t2.value2/10) = t1.value1