使用Db2中的LOCATE_IN_STRING函数,我想将字段2和字段3与下面的字符串分开。
RTN1319 5.7.18 INSUFFICIENT FUNDS
字段1: Chk编号字段
字段2: Tr日期字段
字段3:原因
我只想拉出TR日期和原因
Select TRIM(SUBSTR(TRIM('RTNCK1319 5.7.19 INSUFFICIENT FUNDS'),LOCATE_IN_STRING(TRIM('RTNCK1319 5.7.19 INSUFFICIENT FUNDS'),' ',+1))) from SYSIBM.SYSDUMMY1 ;
Select TRIM(SUBSTR(TRIM('RTNCK1319 5.7.19 INSUFFICIENT FUNDS'),LOCATE_IN_STRING(TRIM('RTNCK1319 5.7.19 INSUFFICIENT FUNDS'),' ',+1))) from SYSIBM.SYSDUMMY1 ;发布于 2019-05-15 15:25:11
对于所有适用于LUW版本的Db2:
with t (s) as (values
'RTNCK1319 5.7.19 INSUFFICIENT FUNDS'
)
select
xmlcast(xmlquery('fn:tokenize($s, " +")[2]' passing ltrim(t.s) as "s") as varchar(10))
, xmlcast(xmlquery('fn:replace($s, "^ *[^ ]+ +[^ ]+ +", "")' passing t.s as "s") as varchar(100))
from t;不使用regexp (第1-st两个中间空格必须是一个):
with t (s) as (values
'RTNCK1319 5.7.19 INSUFFICIENT FUNDS'
)
select
substr(s, s1pos+1, s2pos-s1pos) s1
, substr(s, s2pos+1) s2
from
(
select
ltrim(s) s
, locate_in_string(ltrim(s), ' ', 1, 1) s1pos
, locate_in_string(ltrim(s), ' ', 1, 2) s2pos
from t
);https://stackoverflow.com/questions/56139984
复制相似问题