我只需要将我的查询过滤到字符串中的第 4 个字符为“H”,例如: CM1H8A6
我试过instr(m_reference,' ',1,4)
,但它不允许非数字值。
ORA-01722: invalid number 01722. 00000 - "invalid number" *Cause: *Action:
谢谢,阿鲁娜
为了好玩,使用 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>
该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