PostgreSQL如何提取tags字段中指定键k8s-azure-created-by的值?
针对你的需求,有两种可靠的实现方式:
方法一:正则表达式直接提取
利用PostgreSQL的正则匹配函数,精准定位目标键对应的值,同时清理字段中的HTML标签:
SELECT regexp_replace( regexp_match(tags, '"k8s-azure-created-by":\s*"([^"]+)"')[1], '<[^>]+>', '', 'g' ) AS k8s_azure_created_by FROM content;
regexp_match匹配目标键及其值,捕获组([^"]+)提取双引号内的内容regexp_replace移除所有HTML标签(比如<strong>)
方法二:转换为JSON对象提取(更健壮)
由于你的tags字段内容接近JSON结构,先清理HTML标签后转为合法JSON,再通过JSON操作提取值,这种方式更灵活,后续提取其他键也很方便:
SELECT ( jsonb( '{' || regexp_replace(tags, '<[^>]+>', '', 'g') || '}' ) ->> 'k8s-azure-created-by' ) AS k8s_azure_created_by FROM content;
regexp_replace(tags, '<[^>]+>', '', 'g')清除所有HTML标签- 前后拼接
{}将内容转为合法JSON对象,再转成jsonb类型 ->>操作符提取指定键对应的文本值
内容的提问来源于stack exchange,提问作者hola
相关产品推荐
相关产品推荐

