:: 符号(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)
相关推荐
隔窗听雨眠1 天前
云数仓向PostgreSQL生态延伸的技术动因与工程代价
postgresql·数据库架构·云数仓
Peter-OK2 天前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
FungLeo4 天前
成为全栈·基础补充·数据库索引:为什么加了索引还是慢
mysql·postgresql·sqlite·sql优化·数据库索引·成为全栈
ss2735 天前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
考虑考虑6 天前
Posrgresql恢复.backup文件
数据库·后端·postgresql
Jesse_EC6 天前
换乘次数最少的路径 SQL 查询详解与实战经验——从 WITH RECURSIVE 到 pgRouting
数据库·postgresql
zhangjw346 天前
1-6 PostgreSQL 特色类型实战:数组、JSON & JSONB、枚举、范围类型
数据库·postgresql
IvorySQL6 天前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
FungLeo7 天前
成为全栈·Go 后端篇·从 Node SQLite 到 PostgreSQL:把迁移做成独立交付物
postgresql·golang·sqlite·go·数据库迁移·成为全栈
Small-Young7 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·spring boot·mysql·postgresql·乐观锁·并发控制