You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQL查询结果字符串的中间提取指定整数

提取SQL字符串中指定位置的整数部分

嘿,我明白你要解决的问题了——从XY_4_505543_1227_1499547620这种固定格式的字符串里,提取中间那个加粗的整数部分对吧?你之前用replace的思路卡壳是因为replace确实不支持通配符,不过咱们换几种方法就能搞定,不同的SQL数据库有对应的简便写法,我给你列出来:

方法1:MySQL 专属(最简便)

MySQL里的SUBSTRING_INDEX函数特别适合处理这种下划线分隔的字符串,咱们可以先截取前3个下划线分割的内容,再取最后一段:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(your_column, '_', 3), '_', -1) AS extracted_number
FROM your_table;

举个例子,SUBSTRING_INDEX('XY_4_505543_1227_1499547620', '_', 3)会得到XY_4_505543,再套一层SUBSTRING_INDEX(..., '_', -1)就会提取出最后一段505543。

方法2:SQL Server 专属

SQL Server可以用CHARINDEX定位下划线的位置,再用SUBSTRING截取:

SELECT SUBSTRING(
    your_column,
    -- 找到第三个下划线的位置,加1就是提取的起始点
    CHARINDEX('_', your_column, CHARINDEX('_', your_column, CHARINDEX('_', your_column) + 1) + 1) + 1,
    -- 计算要提取的长度:第四个下划线位置减去第三个下划线位置再减1
    CHARINDEX('_', your_column, CHARINDEX('_', your_column, CHARINDEX('_', your_column) + 1) + 1 + 1) - 
    CHARINDEX('_', your_column, CHARINDEX('_', your_column, CHARINDEX('_', your_column) + 1) + 1) - 1
) AS extracted_number
FROM your_table;

这个写法虽然长,但逻辑很清晰:先依次定位第1、2、3、4个下划线的位置,然后精准截取中间的内容。

方法3:PostgreSQL 专属

PostgreSQL可以把字符串转成数组,直接取对应位置的元素:

SELECT (string_to_array(your_column, '_'))[3] AS extracted_number
FROM your_table;

string_to_array会把XY_4_505543_1227_1499547620转成数组['XY', '4', '505543', '1227', '1499547620'],数组索引从1开始,所以取第3个元素就是咱们要的数字。

内容的提问来源于stack exchange,提问作者Gjack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:22:59