Oracle中的子字符串函数

kmbjn2e3  于 2023-03-22  发布在  Oracle
关注(0)|答案(2)|浏览(133)

我试图删除任何下划线字符是进入我的字符串字段,下划线字符的位置没有设置,所以它可以在任何地方。
我试图使用这个查询,但如果字段没有下划线,我会得到NULL。
SUBSTR('SE 8000901008',1,INSTR('SE 8000901008','')-1)--此处结果为空
SUBSTR('SE 8000901008
',1,INSTR('SE 8000901008_','_')-1)--此处的结果为SE 8000901008
你的帮助在这将是非常感谢。
谢谢你。

zwghvu4y

zwghvu4y1#

如果您想删除下划线,那么replace可能比substr + instr组合更好。

SQL> with test (col) as
  2    (select 'SE8000901008' from dual union all
  3     select 'SE8000901008_' from dual
  4    )
  5  select col,
  6    replace(col, '_') result
  7  from test;

COL                            RESULT
------------------------------ ------------------------------
SE8000901008                   SE8000901008
SE8000901008_                  SE8000901008

SQL>
xe55xuns

xe55xuns2#

您可以检查是否有任何underscre,并选择其他选项

with test (col) as
    (select 'SE8000901008' from dual union all
     select 'SE8000901008_' from dual
    )
SELECT
CASE WHEN INSTR(col, '_') > 0 then
  SUBSTR(col, 1, INSTR(col, '_') -1 )
ELSe col
ENd IF
FROM test

| 中频|
| - ------|
| SE8000901008|
| SE8000901008|
fiddle

相关问题