实例:SQL中根据特殊字符截取数据原创
金蝶云社区-爱孤独又爱你
爱孤独又爱你
116人赞赏了该文章 2,803次浏览 未经作者许可,禁止转载编辑于2023年07月17日 19:34:29

实例:

有一个字段,里面都是用字母和冒号A:换行,想取最后一个冒号前面的字母,如下:

image.png


由于SQL里面没有split,就只能自己想招了;

用了reverse函数反转数据,如下图;

image.png

用charindex函数返回数据;charindex(':',@str,1)  '第一个冒号的索引值'是在第6位;

image.png


然后再用substring截取数据;

substring的用法-截取指定位置的字符串

substring(字段,从第几位开始截取,截取字段长度);

substring(F_ORA_REMARK2,1,10);  从第一位开始取10个字符;

image.png

完整代码:

SELECT F_ORA_REMARK2,F_ORA_ORGID,substring(reverse(F_ORA_REMARK2),charindex(':',reverse(F_ORA_REMARK2))+1,1) FROM T_BD_MATERIAL

WHERE substring(reverse(F_ORA_REMARK2),charindex(':',reverse(F_ORA_REMARK2))+1,1) IN ('B','J','C','Z') 

ORDER BY substring(reverse(F_ORA_REMARK2),charindex(':',reverse(F_ORA_REMARK2))+1,1)


substring(reverse(F_ORA_REMARK2),charindex(':',reverse(F_ORA_REMARK2))+1,1) 

表示:截取反转字段F_ORA_REMARK2,获取反转字段冒号的索引值的位置,+1表示索引值+1,比如获取的是6,再加1就是7,最后一个1表示的是获取字段的长度;


赞 116