postgres count 数组 与 json

-- count
https://www.modb.pro/db/33446
-- 统计预估值
SELECT reltuples::bigint
  FROM pg_catalog.pg_class
 WHERE relname = 'tablename';

-- 要用 * 会有优化
SELECT COUNT(*) FROM tablename

-- 建表 
    [SugarColumn(ColumnName = "countries", ColumnDescription = "国家", ColumnDataType = "text []", IsArray = true, IsNullable = true)]
    public string[] countries { get; set; }

    [SugarColumn(ColumnName = "emails", ColumnDescription = "电子邮件", ColumnDataType = "JSONB", IsJson = true, IsNullable = true)]
    public object? emails { get; set; }

-- 找出数组中的某一列
SELECT skills, skills[1] /* [1] 返回数组的第1项 */
FROM linkedin_data_demo
WHERE EXISTS (
    SELECT 1 
    FROM unnest(skills) AS skill 
    WHERE skill = 'economics'
)
LIMIT 10

-- -> 列出 json ->> 转为字符串
-- 根据 json 数组中的  name 进行查找
SELECT data_id, jsonb_array_elements(languages)::json ->> 'name'
FROM linkedin_data_demo
WHERE  EXISTS (
  SELECT 1
  FROM jsonb_array_elements(languages) AS lang
  WHERE lang->>'name' = 'french'
)
LIMIT 10

-- 列出 json 数组中的 name 方法 1
SELECT data_id, jsonb_array_elements(languages) ->> 'name'
FROM linkedin_data_demo
WHERE data_id = 'santhosh-ramaswamy-505842118'

-- 列出 json 数组中的 name 方法 2
SELECT data_id, lang ->> 'name'
FROM linkedin_data_demo,
jsonb_array_elements(languages) AS lang
LIMIT 10
上一篇
下一篇