如何从Db2中的定界字符串中提取值

时间:2020-04-24 10:09:59

标签: db2

如何从以下字符串中提取PAXG

0410|M|PAXG|20181114  

在Db2 SQL中

2 个答案:

答案 0 :(得分:1)

对于表BILL及其带有数据的列COL1,请尝试使用此方法。

SELECT 
  COL1
-- since 9.7
, xmlcast(xmlquery('fn:tokenize($s, "\|")[3]' passing BILL.COL1 as "s") as varchar(20)) as one
-- since 11.1
, REGEXP_SUBSTR(BILL.COL1 || '|', '([^\|]*)\|', 1, 3, '', 1) as two
FROM 
(VALUES '0410|M|PAXG|20181114', '0410|M||20181114') BILL (COL1)
--BILL
;

答案 1 :(得分:1)

如果您使用的是Db2 11.1或更高版本,那么REGEXP_EXTRACT将为您工作。例如

VALUES REGEXP_EXTRACT('0410|M|PAXG|20181114','([^\|]*)\|?', 1, 3, '', 1)

返回

1     
------
PAXG  

REGEXP_EXTRACT