oracle 截取部门全路径末级部门
1、截取首级部门(如果使用系统翻转函数(REVERSE)出现乱码,请使用 N_REVERSE)
SELECT SUBSTR(N_REVERSE(N_REVERSE('华中华西区域/长沙相成公司/综合部')), 1,
INSTR( N_REVERSE(N_REVERSE('华中华西区域/长沙相成公司/综合部')),'/') - 1) AS
tp_MaterialName FROM DUAL
2、截取末级部门(如果使用系统翻转函数(REVERSE)出现乱码,请使用 N_REVERSE)
SELECT REVERSE(SUBSTR(REVERSE(REVERSE(SUBSTR(REVERSE('华中华西区域/长沙相成公司
/长沙圣力华苑项目/综合部/'),2,LENGTH(REVERSE('华中华西区域/长沙相成公司/长沙圣
力华苑项目/综合部/'))))), 1, INSTR( REVERSE(REVERSE(SUBSTR(REVERSE('华中华西区
域/长沙相成公司/长沙圣力华苑项目/综合部/'),2,LENGTH(REVERSE('华中华西区域/长沙
相成公司/长沙圣力华苑项目/综合部/'))))),'/') - 1)) AS DPT FROM DUAL;
创建翻转函数:N_REVERSE
CREATE OR REPLACE FUNCTION N_REVERSE (p_str IN NVARCHAR2)
RETURN NVARCHAR2
AS
v_return NVARCHAR2(4000);
BEGIN
FOR i in 1..length(p_str)
LOOP
v_return := SUBSTR(p_str,i,1)||v_return;
END LOOP;
RETURN v_return;
END n_reverse;
备注:出现乱码是字符集问题
评论0
最新资源