0

我只需要将我的查询过滤到字符串中的第 4 个字符为“H”,例如: CM1H8A6

我试过instr(m_reference,' ',1,4),但它不允许非数字值。

ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    
*Action:

谢谢,阿鲁娜

4

2 回答 2

1

为了好玩,使用 regexp_like 的解决方案(任何字符的 3 个实例后跟大写的“H”):

SQL> with tbl(m_reference) as (
      select 'CM1H8A6' from dual
    )
    select m_reference
    from tbl
    where regexp_like(m_reference, '.{3}H');

M_REFER
-------
CM1H8A6

SQL>
于 2017-03-15T17:25:02.530 回答
1

INSTR函数在另一个字符串中查找一个字符串。

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

这就是为什么当你用1第二个参数调用它时你会得到 this ORA-01722: invalid number

如果您正在寻找字符串中的特定位置,请使用SUBSTR

SUBSTR(string, position [, substring_length])

对你来说这是

SUBSTR(m_reference, 4, 1)  -- gives you the 4th char in m_reference
于 2017-03-15T14:59:53.243 回答