如何提取ID字段中两个下划线之间的字符?SQL语句求助
提取两个下划线之间字符的SQL解决方案
你的原SQL语句存在语法错误(CHARINDEX('_', ItemID + )部分缺少拼接内容),且逻辑仅能截取第一个下划线前的内容。要提取两个下划线之间的字符,可根据使用的SQL方言选择以下方法:
通用方案(适配多数SQL数据库)
通过两次定位下划线位置,精准截取中间内容:
SELECT SUBSTRING( itemID, CHARINDEX('_', itemID) + 1, CHARINDEX('_', itemID, CHARINDEX('_', itemID) + 1) - CHARINDEX('_', itemID) - 1 ) AS PartID FROM your_table;
CHARINDEX('_', itemID):获取第一个下划线的位置CHARINDEX('_', itemID, CHARINDEX('_', itemID)+1):从第一个下划线的下一位开始,定位第二个下划线的位置- 起始位置设为第一个下划线位置+1,长度为第二个下划线位置减去第一个下划线位置再减1,以此截取中间段
MySQL 简化写法
用SUBSTRING_INDEX函数实现更简洁:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(itemID, '_', 2), '_', -1) AS PartID FROM your_table;
SUBSTRING_INDEX(itemID, '_', 2):截取从开头到第二个下划线的部分(例如12345_B24L)- 嵌套
SUBSTRING_INDEX(..., '_', -1):提取上述结果中最后一个下划线后的内容,即目标中间段
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

