【问题标题】:how to extract some particular text from Postgresql DB field如何从 Postgresql DB 字段中提取一些特定的文本
【发布时间】:2021-10-09 09:58:27
【问题描述】:

我在 Postgresql DB 字段中有一个名为“_response”的大文本,并且它的文本很长。我需要从中获取特定的文本。即

{"bbox":[151.144543,-33.840148,151.144832,-33.839811],"type":"Feature","geometry":{"type":"LineString","coordinates":[[151.144832,-33.840148],[151.144682,-33.839973],[151.144543,-33.839811]]},"properties":{"id":"000000000905012584","

我只需要从 postgresql 的上述字段中获取“151.144832,-33.840148”,请您指导我。非常感谢

【问题讨论】:

    标签: sql postgresql postgis


    【解决方案1】:

    欢迎来到 SO。

    假设_responsetext 类型,将列转换为jsonb 并使用运算符->->> 提取您想要的值,例如:

    SELECT _response::jsonb -> 'bbox' FROM yourtable;
    

    如果您出于某种原因想要提取线串的第一个坐标对并将其显示为 csv 在单列中,请考虑将 json 文档转换为 geometry 并使用函数 ST_PointN 来捕获它:

    SELECT 
     ST_X(
      ST_PointN(ST_GeomFromGeojson((_response::jsonb ->'geometry')::text),1))||','||
     ST_Y(
      ST_PointN(ST_GeomFromGeojson((_response::jsonb ->'geometry')::text),1))  
    FROM yourtable;
    

    演示:db<>fiddle

    【讨论】:

    • 嗨,伙计,非常感谢您的支持。这些都适用于 DB,但是当我在 power bi 中使用第二个从 DB 中获取值时,它给了我错误。有没有其他方法可以提取。谢谢
    • @Vishal 错误消息说什么? :-D
    • 嗨,吉姆,感谢您的回复,由于没有像这样的坐标给出列名,因此发生错误。我修好了它。感谢您的支持
    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多