これを行うには非常に多くの方法があります。特定の方法に取り組む前に、さまざまな方法の説明計画を確認することをお勧めします。たとえば、EMPLOYEE
に関数ベースのインデックスがある場合 SUBSTR(id, 2, LENGTH(id) - 1)
など 次に、それをクエリで使用する必要があります:
SELECT e.name, i.name
FROM employee e INNER JOIN instructor i
ON SUBSTR(e.id, 2, LENGTH(e.id) - 1) = SUBSTR(i.id, 2, LENGTH(i.id) - 1);
もう1つの質問は、id
の値が EMPLOYEE
の列は常に同じ長さです および INSTRUCTOR
。長さが異なる場合はどうなりますか?たぶん、ある人が別の人よりも多くのパディングを持っています。また、それらは常に桁になりますか 主要なu
は別として ?もしそうなら、安全なTO_NUMBER()
を試す価値があるかもしれません 変換:
SELECT e.name, i.name
FROM employee e INNER JOIN instructor i
ON TO_NUMBER(REGEXP_SUBSTR(e.id, '\d+$')) = TO_NUMBER(REGEXP_SUBSTR(i.id, '\d+$'));
ただし、もう1つ考慮したいことがありますが、これは先頭のu
に理由があります。 EMPLOYEE
で id
桁?他の主人公はいますか?主要なu
何かを表しますか(最初の正規形に違反しますが、それは起こります)?