Oracle INSTR() 函数使用指南

Oracle INSTR() 是一个内置函数,它在给定字符串中搜索子字符串并返回一个表示字符串索引位置的整数。

Oracle INSTR() 执行区分大小写的搜索。

Oracle 有几个与之类似的函数,只是它们计算位置的方式不同:

  • INSTR 使用输入字符集定义的字符定义位置,第一个字符的位置是 1。
  • INSTRB 使用字节而不是字符定义位置。
  • INSTRC 使用 Unicode 完整字符定义位置。
  • INSTR2 使用 UCS2 代码点定义位置。
  • INSTR4 使用 UCS4 代码点定义位置。

如果你需要根据正则表达式模式进行匹配,请使用 REGEXP_INSTR()。

Oracle INSTR() 语法

这里是 Oracle INSTR() 函数的语法:

INSTR(string , substring [, position [, occurrence ] ])

参数

string

必需的。要从中搜索的字符串。它可以是 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, 或 NCLOB 数据类型。

substring

必需的。要搜索的子字符串。它可以是 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, 或 NCLOB 数据类型。

position

可选的。 它是一个非零整数,指示开始搜索的索引位置。如果 position 为负数,则 Oracle 从 string 末尾开始倒数,然后从结果位置向后搜索。它从 1 开始。

occurrence

可选的。它是一个整数以指示要搜索字符串的第几次出现。

返回值

Oracle INSTR() 函数返回一个整数,它是子字符串 substring 在字符串 string 中的索引位置。

如果在给定的字符串中找不到给定的子字符串, INSTR() 将返回 0。

如果任意一个参数为 NULL, INSTR() 将返回 NULL。

Oracle INSTR() 示例

这里有几个展示了 Oracle INSTR() 函数用法的示例。

基本用法

下面的语句从 Hello World 搜索 l:

SELECT
    INSTR('Hello World', 'l') Result
FROM dual;

输出:

   RESULT
_________
        3

在本示例中,l 是 Hello World 中的第 3 个字符,因此它返回了 3。

起始位置

Oracle INSTR() 函数允许您指定开始搜索的位置:

SELECT
    INSTR('Hello World', 'l', 4) Result
FROM dual;

输出:

   RESULT
_________
        4

在本示例中,我们通过 position 参数指示从第 4 个字符开始搜索。

第几次出现

Oracle INSTR() 函数允许您指定要搜索子字符串的第几次出现:

SELECT
    INSTR('Hello World', 'l', 1,1) Result1,
    INSTR('Hello World', 'l', 1,2) Result2,
    INSTR('Hello World', 'l', 1,3) Result3
FROM dual;

输出:

   RESULT1    RESULT2    RESULT3
__________ __________ __________
         3          4         10

找不到

如果在给定的字符串中找不到给定的子字符串, INSTR() 将返回 0。

SELECT
    INSTR('Hello World', 'x') Result1,
    INSTR('Hello World', 'l', 20) Result2
FROM dual;

输出:

   RESULT1    RESULT2
__________ __________
         0          0

在本示例中,虽然 Hello World 中包含 l,但是由于起始搜索的位置是 20,因此 INSTR('Hello World', 'l', 20) 返回 0。

NULL 参数

如果任意一个参数为 NULL,该函数将返回 NULL。

SET NULL 'NULL';
SELECT
    INSTR(NULL, 'A') null1,
    INSTR('A', NULL) null2,
    INSTR('A', 'A', NULL) null3,
    INSTR('A', 'A', 1, NULL) null4
FROM dual;

输出:

   NULL1    NULL2    NULL3    NULL4
________ ________ ________ ________
    NULL     NULL     NULL     NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle INSTR() 是一个内置函数,它在给定字符串中搜索子字符串并返回一个表示字符串索引位置的整数。