当前位置: 首页 > news >正文

postgressql查询语法

文章目录

        • `->>`获取json字段并作为文本
        • ->>和->的区别?
        • `::`(双冒号)+类型 转换成指定类型
        • `@>`是否包含
        • `?`(问号)判断key是否存在
      • 创建t_product表及插入数据

常规的就不说了,postgres有些语法和其他数据库不一样,特此记录下。
->>获取json字段并作为文本

主要用的是->>语法:

SELECT*FROMt_productWHEREattributes->>'brand'='Apple';attributes->>'brand'='Apple';相当于从attributes取出brand字段的文本值,再apple比较。
->>和->的区别?

这么理解吧:
->># 获取json字段,并作为文本
-># 获取json字段,并作为json

写法*****左边取出的值右边的值结果原因
->>Nike(文本)'Nike'(文本)✅ 匹配成功文本对文本,天经地义。
->"Nike"(JSONB)'Nike'(文本)❌ 不匹配类型不同,且 JSONB"Nike"实际上包含了引号字符,不等于纯文本 Nike。

简单说就是->>取出的文本,所以可以匹配上,->取出的是json,所以匹配不上。一般来说我们用->>即可。

::(双冒号)+类型 转换成指定类型

因为->>取出来的默认会认为是文本,::numeric表示转换为数值类型。

双冒号是类型转换符号,后面要带上类型。
语法:双冒号+类型
如:
::numeric# 转换为数值
::jsonb# 转换为jsonb

SELECT*FROMt_productWHERE(attributes->>'price')::numericBETWEEN1000AND5000;
@>是否包含
SELECT*FROMt_productWHEREattributes->'tags'@>'["laptop"]'::jsonb;从attributes中取出tag作为jsonb,是否包含laptop,并转换为jsonb

注:这里获取用的是->,数组中的内容也加了双引号

?(问号)判断key是否存在
SELECT*FROMt_productWHEREattributes ?'cpu';

创建t_product表及插入数据

CREATETABLEt_product(id int8NOTNULL,product_codevarchar(50)NOTNULL,product_namevarchar(200)NOTNULL,"attributes"jsonbNULLDEFAULT'{}'::jsonb,specification jsonbNULLDEFAULT'{}'::jsonb,create_datetimestampNULLDEFAULTCURRENT_TIMESTAMP,update_datetimestampNULLDEFAULTCURRENT_TIMESTAMP,CONSTRAINTt_product_pkeyPRIMARYKEY(id),CONSTRAINTt_product_product_code_keyUNIQUE(product_code));CREATEINDEXidx_product_attributesONt_productUSINGgin(attributes);CREATEINDEXidx_product_codeONt_productUSINGbtree(product_code);CREATEINDEXidx_product_nameONt_productUSINGbtree(product_name);CREATEINDEXidx_product_specificationONt_productUSINGgin(specification);-- Table Triggerscreatetriggerupdate_t_product_modtime beforeupdateont_productfor each rowexecutefunctionupdate_modified_column();INSERTINTOt_product(id,product_code,product_name,attributes,specification)VALUES(1001,'PROD-001','MacBook Pro 14寸','{"brand": "Apple", "category": "electronics", "tags": ["laptop", "premium", "work"], "price": 14999, "cpu": "M3 Pro", "memory": "18GB", "storage": "512GB SSD"}'::jsonb,'{"screen_size": "14.2英寸", "resolution": "3024x1964", "weight": "1.61kg", "battery": "70Wh", "ports": ["HDMI", "USB-C x3", "SD卡槽"]}'::jsonb),(1002,'PROD-002','iPhone 15 Pro','{"brand": "Apple", "category": "electronics", "tags": ["smartphone", "5G", "premium"], "price": 8999, "cpu": "A17 Pro", "memory": "8GB", "storage": "256GB"}'::jsonb,'{"screen_size": "6.1英寸", "resolution": "2556x1179", "weight": "187g", "battery": "3274mAh", "camera": "4800万主摄+1200万超广角+1200万长焦"}'::jsonb),(1003,'PROD-003','Nike Air Max 270','{"brand": "Nike", "category": "shoes", "tags": ["sports", "casual", "running"], "price": 1299, "sizes": ["38", "39", "40", "41", "42", "43"], "colors": ["black", "white", "red"]}'::jsonb,'{"material": "网眼布+合成革", "sole": "橡胶", "technology": "Air Max气垫", "weight": "310g", "origin": "越南"}'::jsonb),(1004,'PROD-004','ThinkPad X1 Carbon','{"brand": "Lenovo", "category": "electronics", "tags": ["laptop", "business", "lightweight"], "price": 12999, "cpu": "Intel i7-1365U", "memory": "16GB", "storage": "1TB SSD"}'::jsonb,'{"screen_size": "14英寸", "resolution": "2880x1800", "weight": "1.12kg", "battery": "57Wh", "ports": ["USB-A x2", "USB-C x2", "HDMI"]}'::jsonb),(1005,'PROD-005','星巴克咖啡豆','{"brand": "Starbucks", "category": "food", "tags": ["coffee", "beans", "imported"], "price": 88, "origin": "哥伦比亚", "roast_level": "中度烘焙", "weight": "200g"}'::jsonb,'{"flavor": "坚果+巧克力", "acidity": "中等", "body": "醇厚", "processing": "水洗法", "altitude": "1200-1800米"}'::jsonb),(1006,'PROD-006','小米手环8','{"brand": "Xiaomi", "category": "electronics", "tags": ["wearable", "fitness", "budget"], "price": 249, "display": "AMOLED", "battery_life": "16天", "water_resistance": "5ATM"}'::jsonb,'{"screen_size": "1.62英寸", "resolution": "490x192", "weight": "27g", "sensors": ["心率", "血氧", "加速度计", "陀螺仪"], "connectivity": "蓝牙5.1"}'::jsonb),(1007,'PROD-007','优衣库羽绒服','{"brand": "Uniqlo", "category": "clothing", "tags": ["winter", "down", "lightweight"], "price": 599, "sizes": ["S", "M", "L", "XL", "XXL"], "colors": ["black", "navy", "gray", "red"]}'::jsonb,'{"fill_power": "640+", "down_content": "90%鸭绒", "weight": "约300g", "fabric": "尼龙100%", "warmth_rating": "★★★☆☆"}'::jsonb),(1008,'PROD-008','戴森V15吸尘器','{"brand": "Dyson", "category": "home_appliance", "tags": ["vacuum", "cordless", "premium"], "price": 4990, "suction_power": "230AW", "battery_life": "60分钟", "dustbin_capacity": "0.76L"}'::jsonb,'{"weight": "3.1kg", "filtration": "五重过滤", "modes": ["ECO", "Auto", "Boost"], "accessories": ["激光探测头", "防缠绕刷头", "缝隙清洁头"], "warranty": "2年"}'::jsonb);
http://www.jsqmd.com/news/819700/

相关文章:

  • 2026年靠谱的亚克力/亚克力指示牌精选推荐公司 - 品牌宣传支持者
  • 铁路光纤熔接机推荐:鼎讯 TY-30H 性能参数与应用场景
  • Canvas粒子系统实现动态星空:从原理到性能优化的前端动画实践
  • Perplexity MLA格式支持突然中断,紧急补救清单与本地缓存回滚操作手册
  • 2026优质新疆青少年行为矫正学校/新疆叛逆青少年特训学校盘点与推荐:晨露沐阳领衔 - 栗子测评
  • ARM PMU性能监控单元架构与实战指南
  • 终极PHPExcel性能优化指南:从512MB到1GB内存的突破技巧
  • 3个核心优势:Bebas Neue字体如何重塑现代设计工作流
  • ClawMapper:高效数据映射工具的设计原理与实战应用
  • 2026年靠谱的电触点/植入式医疗电触点/神经刺激器电触点/微型医疗导电触点生产厂家 - 行业平台推荐
  • 别再双击打不开了!手把手教你用CMD命令行启动BurpSuite破解版(附环境变量排查)
  • GPT API实现工程化落地:从原型到高可用服务的实践路径
  • FPGA加速的量化感知数字水印技术解析
  • Display-Lock:智能防休眠工具的原理、实现与安全实践
  • 各种数据库查询运行中的sql以及终止进程
  • 别再被‘Automatic merge failed’吓到!手把手教你用VSCode插件5分钟搞定Git冲突
  • ARM GICv3中断控制器系统寄存器解析与应用
  • 如何高效管理Windows系统:智能优化工具实战指南
  • 基于AI的RSS智能聚合器:GPT-RSS项目实战与部署指南
  • 基于电容触摸与接近传感的无接触MIDI控制器设计与实现
  • Net通过统计局地址实现 地址解析api免费接口
  • 飞书文档批量导出终极指南:3步实现自动化文档迁移
  • 硬盘里塞了几百本电子书,找一本要翻半天?Calibre-Web 把它们变成真正的私人图书馆
  • 符号执行技术在硬件故障攻击分析中的优化与应用
  • Next Token Prediction在数据库优化中的创新应用
  • DeepSeek数学推理实战手册:从GSM8K错题反推7类典型逻辑断层及修复模板
  • Sidekiq监控测试终极指南:如何全面检测系统状态与性能
  • 终极 ChatGPT-Google 扩展日志分析指南:深度洞察用户行为与功能使用统计 [特殊字符]
  • Go语言算法复杂度分析:时间与空间
  • 终极指南:ta-lib-python社区案例分享与实用应用技巧