【问题标题】:can't sort data in Postgresql data type json无法对 Postgresql 数据类型 json 中的数据进行排序
【发布时间】:2015-06-13 23:10:22
【问题描述】:

我目前正在尝试“新”数据类型 json。 这是定义为 php Array(字段中存储的一行数据)的一部分

'processed'=>array(5):
        ["ct"]=>
        int(1)
        ["wt"]=>
        int(11)
        ["cpu"]=>
        int(0)
        ["mu"]=>
        int(1056)
        ["pmu"]=>
        int(0)

我尝试了以下查询:

SELECT id, data->>'processed'>'ct' as sortField FROM system_debug ORDER BY sortField ASC

但我得到的只是一张这样的表格:

id  sortfield
    6   true
    7   true
    8   true
    9   true
    10   true
    11   true
    12   true
    13   true
    14   true
    15   true
    16   true
    17   true
    18   true

我正在尝试实现排序,而不需要将数据单独存储在表中。 我错在哪里了?

表方案:

                CREATE TABLE system_debug (
                    data JSON,
                    id integer NOT NULL
                );

                CREATE SEQUENCE system_debug_id_seq
                START WITH 1
                INCREMENT BY 1
                NO MINVALUE
                NO MAXVALUE
                CACHE 1;

                ALTER SEQUENCE system_debug_id_seq OWNED BY system_debug.id;

                ALTER TABLE ONLY system_debug ALTER COLUMN id SET DEFAULT nextval(\'system_debug_id_seq\'::regclass);

感谢任何我能得到的帮助^^

【问题讨论】:

  • 可能是错字:SELECT id, data->>'processed'->'ct'
  • 嗯,没用。
  • 错误:运算符不存在:文本-> 未知第 1 行:选择 id,数据->>'已处理'->'ct' FROM system_debug; ^ 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
  • SELECT id, data->'processed'->'ct' 两个错别字,抱歉 ;)
  • 克林你能把你的回复作为答案发布,所以我可以关闭这个问题吗?

标签: php sql json postgresql


【解决方案1】:

表达式

data->>'processed'>'ct'

是布尔类型,因为 > 是 greater than 运算符。你可能想得到

SELECT id, data->'processed'->'ct' ...

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2019-12-02
    • 2022-11-21
    • 2015-11-03
    • 2014-05-22
    相关资源
    最近更新 更多