Sql 个案情况及;oracle中的Instring函数
我的oracle数据库中有一个表,其中varchar2列为“Detail_Number”,记录如下所示-Sql 个案情况及;oracle中的Instring函数,sql,oracle,oracle11g,oracle10g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle10g,Oracle Sqldeveloper,我的oracle数据库中有一个表,其中varchar2列为“Detail_Number”,记录如下所示- Detail_Number -------------- P1464187 1-17J3P VAR1460621 P15000566 VRH-P146310034 RH-73082_SS1 19502744 现在,我想使用一个case语句,它只返回Detail_Number列中特殊字符“_”前面的部分,以防出现特殊字符。否则,请把详细的号码还给我 我写的案例陈述是- CASE WHEN
Detail_Number
--------------
P1464187
1-17J3P
VAR1460621
P15000566
VRH-P146310034
RH-73082_SS1
19502744
现在,我想使用一个case语句,它只返回Detail_Number列中特殊字符“_”前面的部分,以防出现特殊字符。否则,请把详细的号码还给我
我写的案例陈述是-
CASE
WHEN INSTR(A.AGREEMENT_NUMBER, '_') IS NOT NULL THEN SUBSTR(A.AGREEMENT_NUMBER, 0, INSTR(A.AGREEMENT_NUMBER, '_')-1)
WHEN INSTR(A.AGREEMENT_NUMBER, '_') = 0 THEN A.AGREEMENT_NUMBER
--ELSE A.AGREEMENT_NUMBER
END AS Output
查询结果如下所示-
Detail_Number Output
------------- --------
P1464187
1-17J3P
VAR1460621
P15000566
VRH-P146310034
RH-73082_SS1 RH-73082
19502744
在这里,我得到了跳过“u”后的部分。但是,如果“\u1”不存在,它将返回null。你能帮我做同样的事情吗
谢谢。你是说这个吗
SQL> with
2 data as (select 'P1464187' t# from dual union all
3 select '1-17J3P' t# from dual union all
4 select 'VAR1460621' t# from dual union all
5 select 'P15000566' t# from dual union all
6 select 'VRH-P146310034' t# from dual union all
7 select 'RH-73082_SS1' t# from dual union all
8 select '19502744' t# from dual)
9 select
10 substr(t#, 1, instr(t# || '_', '_') - 1)
11 from
12 data;
SUBSTR(T#,1,INSTR(T#||'_','_')-1)
--------------------------------------------------------
P1464187
1-17J3P
VAR1460621
P15000566
VRH-P146310034
RH-73082
19502744
7 rows selected.
你是说这个吗
SQL> with
2 data as (select 'P1464187' t# from dual union all
3 select '1-17J3P' t# from dual union all
4 select 'VAR1460621' t# from dual union all
5 select 'P15000566' t# from dual union all
6 select 'VRH-P146310034' t# from dual union all
7 select 'RH-73082_SS1' t# from dual union all
8 select '19502744' t# from dual)
9 select
10 substr(t#, 1, instr(t# || '_', '_') - 1)
11 from
12 data;
SUBSTR(T#,1,INSTR(T#||'_','_')-1)
--------------------------------------------------------
P1464187
1-17J3P
VAR1460621
P15000566
VRH-P146310034
RH-73082
19502744
7 rows selected.
使用REGEXP_替换的选项(在大型建筑中可能不如Sanders INSTR选项有效)(但仍然有效)
使用REGEXP_替换的选项(在大型建筑中可能不如Sanders INSTR选项有效)(但仍然有效)
你想要的结果是什么?我找到了解决方案-当INSTR(A.AGREEMENT_NUMBER,')0时,然后SUBSTR(A.AGREEMENT_NUMBER,0,INSTR(A.AGREEMENT_NUMBER,')-1)当INSTR(A.AGREEMENT_NUMBER,')时=0然后是A.AGREEMENT\u NUMBER——否则A.AGREEMENT\u NUMBER以输出形式结束您想要的结果是什么?我找到了解决方案-当INSTR(A.AGREEMENT\u NUMBER,'')0然后SUBSTR(A.AGREEMENT\u NUMBER,0,INSTR(A.AGREEMENT\u NUMBER,'')-1当INSTR(A.AGREEMENT\u NUMBER,'')=0然后A.AGREEMENT\u NUMBER——否则A.AGREEMENT\u NUMBER以输出形式结束