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

Oracle SQL:如何定位字符串下划线位置并实现截取?

解决下划线位置定位与字符串截取问题

1. 纠正INSTR函数的参数顺序

你完全搞反了INSTR的参数顺序!绝大多数数据库里,INSTR的正确语法是INSTR(源字符串, 要查找的子串)。你写的INSTR('_', COLUMN1)是在判断下划线这个字符里是否包含整个COLUMN1的内容,这显然不可能,所以全返回0。

把参数调换过来,写成INSTR(COLUMN1, '_'),针对示例数据STRING1_STRING2就能得到预期的8。

2. 下划线的转义问题

不需要转义下划线!只有在LIKE语句里,下划线是单字符通配符,这时候才需要转义(比如LIKE '%\_%')。但INSTR里下划线就是普通字符,直接写就行。

3. 实现字符串截取的正确语句

用修正后的INSTR配合SUBSTR就能完成需求:

SELECT SUBSTR(COLUMN1, 1, INSTR(COLUMN1, '_') - 1) AS LEFT_PART
FROM your_table;

这条语句会把COLUMN1中第一个下划线之前的内容截取出来,对应示例数据就返回STRING1。

可选的简化写法(部分数据库支持)

像MySQL、MariaDB这类数据库提供了SUBSTRING_INDEX函数,能直接按分隔符截取指定部分,写法更简洁:

SELECT SUBSTRING_INDEX(COLUMN1, '_', 1) AS LEFT_PART
FROM your_table;

效果和上面的语句完全一样,不用手动计算位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:17