如何编写SQL SELECT查询提取Id列按分隔符拆分的后两段拼接值
你可以直接将SPLIT_PART拆分出的第二、第三段用字符串拼接符连起来,中间加个-即可,不同数据库的写法略有差异:
支持SPLIT_PART的数据库(PostgreSQL、Oracle、SQL Server 2016+等)
使用||(SQL Server用+)作为拼接符:
-- PostgreSQL/Oracle/SQLite 写法 SELECT SPLIT_PART(Id, '-', 2) || '-' || SPLIT_PART(Id, '-', 3) AS processed_id FROM 你的表名; -- SQL Server 写法 SELECT SPLIT_PART(Id, '-', 2) + '-' + SPLIT_PART(Id, '-', 3) AS processed_id FROM 你的表名;
MySQL 写法
MySQL没有内置SPLIT_PART,可以用SUBSTRING_INDEX实现同样效果:
SELECT CONCAT( SUBSTRING_INDEX(SUBSTRING_INDEX(Id, '-', 2), '-', -1), '-', SUBSTRING_INDEX(Id, '-', -1) ) AS processed_id FROM 你的表名;
逻辑说明:SPLIT_PART(字段, 分隔符, 序号)会按指定分隔符拆分字符串,返回对应序号的片段(序号从1开始计数),我们分别取第2、第3段,中间拼上分隔符-就得到了你需要的格式,用你给出的示例数据运行后输出和你要求的结果完全一致。
内容的提问来源于stack exchange,提问作者heisenberg
相关产品推荐
相关产品推荐

