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 语句假设括号内只包含整数值,如果实际情况中可能有其他类型,需要根据实际情况进行调整。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!