如果你经常需要这个,写一个函数。
然后用它来创建一个真实的表,其中“key”变成了列名——还有一个数字字符串,比如“51”变成了一个INTEGER,而不是一个VARCHAR......
这是一个函数定义和一个运行测试...
CREATE OR REPLACE FUNCTION val (
s VARCHAR
, k VARCHAR
)
RETURN VARCHAR AS
BEGIN
RETURN REGEXP_SUBSTR(s,k||'\s*=\s*([^,]+),?',1,1,'i',1);
END;
WITH input(s,k) AS (
SELECT 'Age = 51, Country = USA, State = NY','Age'
UNION ALL SELECT 'Age = 51, Country = USA, State = NY','Country'
UNION ALL SELECT 'Age = 51, Country = USA, State = NY','State'
)
SELECT
*
, val(s,k)
FROM input;
s | k | val
-------------------------------------+---------+-----
Age = 51, Country = USA, State = NY | Age | 51
Age = 51, Country = USA, State = NY | Country | USA
Age = 51, Country = USA, State = NY | State | NY