魔方网表 让信息化更简单

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

查看: 4321|回复: 4

[原创] 字符串处理函数取树形字段各个节点的第二种方法.

[复制链接]
Assume_alone、 发表于 2012-9-6 14:18:24 | 显示全部楼层 |阅读模式
以前在我的帖子中介绍过用字符串处理函数去树形字段的各级节点的函数公式,不过那个公式只能在树形字段的节点必须是固定为4级节点的时候才能用,在发现这个问题之后.我终于又想出一个方法.下面把函数公式贴给大家.没有看过之前帖子的最好先去看看之前的帖子:http://bbs.mf999.com/forum.php?mod=viewthread&tid=40449

取第一级节点:
IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))=1,MID($MF(代理商)$,2,len($MF(代理商)$)-1),MID($MF(代理商)$,2,FIND("/",$MF(代理商)$,2)-2))

取第二级节点:

IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))>2,MID($MF(代理商)$,FIND("/",$MF(代理商)$,2)+1,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,2)+1))-(FIND("/",$MF(代理商)$,2)+1)),IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))=2,MID($MF(代理商)$,find("/",$MF(代理商)$,2)+1,len($MF(代理商)$)-find("/",$MF(代理商)$,2)),MFNULL()))

取第三级和第四级节点:
IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))<3,mfnull(),IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))=3,MID($MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1,len($MF(代理商)$)-find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)),MID($MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,2)+1))+1,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,2)+1))+1)-FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,2)+1))-1)))


不得不说,魔方的应用真的很灵活.
yangyang1986080 发表于 2013-4-2 13:18:46 | 显示全部楼层
沙发哥沙发哥沙发哥沙发哥沙发哥沙发哥沙发哥沙发哥
回复

使用道具 举报

qq39477721 发表于 2015-12-26 21:08:02 | 显示全部楼层
好复杂啊。。。。。。。。。。。。。。
回复

使用道具 举报

y092012 发表于 2017-8-17 09:50:12 | 显示全部楼层
本帖最后由 y092012 于 2017-8-18 16:11 编辑

刚刚研究了一下

四级节点公式:
IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))<4,mfnull(),IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))=4,MID($MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)+1,len($MF(代理商)$)-find("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)),MID($MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1))+1,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1))+1)-FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1))-1)))


五级节点公式 :
IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))<5,mfnull(),IF(len($MF(代理商)$)-len(SUBSTITUTE($MF(代理商)$,"/",""))=5,MID($MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)+1)+1,len($MF(代理商)$)-find("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)),MID($MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)+1))+1,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)+1))+1)-FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,FIND("/",$MF(代理商)$,find("/",$MF(代理商)$,find("/",$MF(代理商)$,2)+1)+1)+1))-1)))
回复

使用道具 举报

cdwlove 发表于 2018-6-20 12:35:56 | 显示全部楼层
这里都是取已知层级的节点方法,如果想取末级节点呢,要怎么实现???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-6-18 18:14 , Processed in 0.076557 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表