SUBSTR 和 INSTR SQL Oracle

The*_*ear 3 sql oracle function

我已经开始在 Oracle 中使用 SUBSTR 和 INSTR,但是当我遇到这个时我感到很困惑。

SELECT PHONE, SUBSTR(PHONE, 1, INSTR(PHONE, '-') -1)
FROM DIRECTORY;
Run Code Online (Sandbox Code Playgroud)

所以我知道 SUBSTR 截断了值,而 INSTR 显示了出现的位置,但上面的示例让我感到困惑,因为结果是 362。当我的原始值是 362-127-4285 时。这是如何运作的?

for*_*pas 7

INSTR(PHONE, '-')在您的情况下给出列中的索引,然后或 给出具有字符长度的列的子字符串, 如果值列是,则为。-PHONE4
SUBSTR(PHONE, 1, 4 - 1)SUBSTR(PHONE, 1, 3)
PHONE1st3362
PHONE362-127-4285