在 SQL 查询中编写提取函数

Write extract function in SQL query

我需要从

中提取1421412043
REQ: <<online>true</online><cardno>1421412043</cardno><amount> 349812948:00, OLDID= 1969)

我试试这个,但它得到 1421412043</cardno><amount> 349812948:00, OLDID= 1969):

SELECT
    extract(value, '.*<cardno>(.*).*') AS cardno
FROM ......

那个正则表达式怎么写对?

你可以使用

extract(value, '<cardno>([^<]+)') AS cardno

或者,

extract(value, '<cardno>([0-9]+)') AS cardno

根据 extract 参考,“它采用与第一个子模式匹配的片段。 这里,([^<]+) 是一个捕获组,它匹配一个或除 < 以外的更多字符(并且 ([0-9]+) 匹配并捕获一位或多位数字)。