postgresql | sql运用

需求

postgresql这么一个字段a,字段类似是字符串,字段值如'{1,3,1}',null, '{2}',现在需求是新增一列b,类型为int,提取字段a的值,如'{1,3,1}',提取括号的第一个值,如null则返回null,用sql语句完成

解决

假设你的字段 a 的类型为字符串,包含类似 {1,3,1}, null, {2} 这样的值,可以通过以下 SQL 语句新增一列 b,并提取 a 字段中括号中的第一个值:

-- 添加新列 b
ALTER TABLE your_table ADD COLUMN b INTEGER;

-- 更新新列 b 的值
UPDATE your_table
SET b = CASE
         WHEN a IS NULL THEN NULL
         ELSE CAST(SUBSTRING(a FROM '[0-9]+' ) AS INTEGER)
       END;

your_table 为实际的表名。

这里使用了 SUBSTRING 函数来提取字符串中的数字部分,然后通过 CAST 将其转换为整数。CASE 语句用于处理 a 字段为 null 的情况,将 b 字段也设为 null

这个 SQL 语句假设括号内只包含整数值,如果实际情况中可能有其他类型,需要根据实际情况进行调整。

posted @   槑孒  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示