无法对Postgresql数据类型json中的数据进行排序

时间:2015-06-13 23:10:22

标签: php sql json postgresql

我目前正在尝试“新”数据类型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);

我接受了任何我能得到的帮助^^

1 个答案:

答案 0 :(得分:1)

表达式

data->>'processed'>'ct'

的类型为boolean,因为>greater than运算符。你可能想得到

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