如何使用SQL提取分隔符间的第2个子串?无需新增列
提取分隔列中第二个值的简化SQL写法
你可以直接通过嵌套调用字符串函数,一步提取出目标值,无需生成中间冗余列:
SELECT SUBSTRING( cookie_data, CHARINDEX(' | ', cookie_data) + 3, CHARINDEX(' | ', cookie_data, CHARINDEX(' | ', cookie_data) + 3) - (CHARINDEX(' | ', cookie_data) + 3) ) AS email FROM TABLE
逻辑说明:
CHARINDEX(' | ', cookie_data)定位第一个分隔符的起始位置,加3是跳过|这三个字符(空格+竖线+空格)CHARINDEX(' | ', cookie_data, CHARINDEX(' | ', cookie_data) + 3)从第一个分隔符的后方开始搜索,定位第二个分隔符的起始位置- 用第二个分隔符的位置减去「第一个分隔符位置+3」的数值,得到目标内容的长度,通过SUBSTRING直接提取出第二个值
针对示例数据732711 | 732711@soundcorp.com | 732711 Store,这个语句会直接返回732711@soundcorp.com。
内容的提问来源于stack exchange,提问作者jp207
相关产品推荐
相关产品推荐

