:: 符号(Postgres / Hologres)

:: 是类型强制转换运算符,读作「强转为」,属于 PostgreSQL 原生语法,Hologres 完全兼容。

复制代码
'{}'::jsonb

含义:把字符串字面量 '{}',强制转换成 jsonb 类型。

拆解

  • '{}':文本字符串,内容是一对大括号(空 json 对象),类型是 text
  • ::jsonb::: 强转,把 text → jsonb

最终结果:空 jsonb 对象 {}

其他常见例子

复制代码
'123'::int        --文本转整数
'3.14'::numeric   --文本转小数
'2026-10-14'::date --文本转日期
'[]'::jsonb       --字符串转空jsonb数组

和标准 SQL CAST 的等价关系

A::B 是简写,等价于 CAST(A AS B)

复制代码
--简写(日常写Holo常用)
'{}'::jsonb

--完整标准写法
CAST('{}' AS jsonb)

两个完全一样,只是::写起来更短,Holo 开发普遍用这种。

注意 2 个坑

  1. 转换失败直接报错

    'abc'::int -- 字符串abc无法转为数字,查询抛异常

  2. 和业务结合:

    coalesce(r.tags, '{}'::jsonb)

  • 如果r.tags是 NULL,就替换成jsonb 类型的空对象;
  • 如果不写::jsonb,直接写coalesce(r.tags, '{}'),会出现类型不一致(一边 jsonb,一边 text),SQL 编译报错。

补充区分

  • :::Postgres/Holo 专属简写强转
  • CAST() AS:ANSI 标准 SQL,跨数据库通用(MySQL 不支持::,只能用 CAST)
相关推荐
zhangjw344 小时前
1-3 PostgreSQL 架构模型:实例、数据库、Schema 模式、表空间完整概念
数据库·postgresql·架构
周周爱喝粥呀5 小时前
详细教程:在 Docker 中部署 PostgreSQL 并使用 pgAdmin 可视化管理
docker·postgresql·容器
qq_白羊座5 小时前
Hologres / PostgreSQL jsonb 常用函数 & 操作符对照表
数据库·postgresql
kele_z7 小时前
手工修改数据库中的数据时,我会加的四道保险
mysql·postgresql
ly76897 小时前
PostgreSQL 执行计划深读:从 EXPLAIN 输出到代价模型驱动的 SQL 改写
数据库·sql·postgresql·explain·执行计划·代价模型
ss2738 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 16 PostgreSQL子查询与嵌套查询(下)
数据库·笔记·postgresql
l1t10 小时前
DeepSeek总结的PostgreSQL 的 MVCC 很糟。其他所有的也一样。第1部分
数据库·postgresql
ss27311 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 15 PostgreSQL子查询与嵌套查询(上)
数据库·人工智能·postgresql
ly76891 天前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档