Oracle regexp_substr获取字符串的第一部分
我被困在这里了。我正在使用oracle,我希望在第一次出现“|”之前获取字符串的第一部分。这是我的查询,但它返回最后一部分,即25.0。我希望它返回第一部分,即53。我如何做到这一点Oracle regexp_substr获取字符串的第一部分,oracle,Oracle,我被困在这里了。我正在使用oracle,我希望在第一次出现“|”之前获取字符串的第一部分。这是我的查询,但它返回最后一部分,即25.0。我希望它返回第一部分,即53。我如何做到这一点 select regexp_substr('53|100382951130|25.0', '[^|]+$', 1,1) as part1 from dual 假设始终至少出现一次“|”,则可以在不使用regexp的情况下使用以下选项: with test(string) as ( select '53|1003
select regexp_substr('53|100382951130|25.0', '[^|]+$', 1,1) as part1 from dual
假设始终至少出现一次
“|”
,则可以在不使用regexp的情况下使用以下选项:
with test(string) as ( select '53|100382951130|25.0' from dual)
select substr(string, 1, instr(string, '|')-1)
from test
您甚至可以使用regexp实现同样的功能,或者甚至可以处理没有“|”的情况:
with test(string) as (
select '53|100382951130|25.0' from dual union all
select '1234567' from dual)
select string,
substr(string, 1, instr(string, '|')-1),
regexp_substr(string, '[^|]*')
from test
您甚至可以在不使用regexp的情况下处理不出现“|”
的情况:
with test(string) as (
select '53|100382951130|25.0' from dual union all
select '1234567' from dual)
select string,
substr(string, 1, instr(string, '|')-1),
regexp_substr(string, '[^|]*'),
substr(string, 1,
case
when instr(string, '|') = 0
then length(string)
else
instr(string, '|')-1
end
)
from test
假设始终至少出现一次“|”
,则可以在不使用regexp的情况下使用以下选项:
with test(string) as ( select '53|100382951130|25.0' from dual)
select substr(string, 1, instr(string, '|')-1)
from test
您甚至可以使用regexp实现同样的功能,或者甚至可以处理没有“|”的情况:
with test(string) as (
select '53|100382951130|25.0' from dual union all
select '1234567' from dual)
select string,
substr(string, 1, instr(string, '|')-1),
regexp_substr(string, '[^|]*')
from test
您甚至可以在不使用regexp的情况下处理不出现“|”
的情况:
with test(string) as (
select '53|100382951130|25.0' from dual union all
select '1234567' from dual)
select string,
substr(string, 1, instr(string, '|')-1),
regexp_substr(string, '[^|]*'),
substr(string, 1,
case
when instr(string, '|') = 0
then length(string)
else
instr(string, '|')-1
end
)
from test
非常感谢。这对我来说太多了。这使我很好