实例:
有一个字段,里面都是用字母和冒号A:换行,想取最后一个冒号前面的字母,如下:
由于SQL里面没有split,就只能自己想招了;
用了reverse函数反转数据,如下图;
用charindex函数返回数据;charindex(':',@str,1) '第一个冒号的索引值'是在第6位;
然后再用substring截取数据;
substring的用法-截取指定位置的字符串
substring(字段,从第几位开始截取,截取字段长度);
substring(F_ORA_REMARK2,1,10); 从第一位开始取10个字符;
完整代码:
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表示的是获取字段的长度;
推荐阅读