注册 登录
编程论坛 VFP论坛

重复字符保留问题

fdqzy 发布于 2020-10-12 18:31, 1040 次点击
如表:
create cursor b1 (m c(5),m1 c(3))
insert into b1 values ("1002","")
insert into b1 values ("12123","")
insert into b1 values ("123","")
insert into b1 values ("01110","")
insert into b1 values ("22201","")
insert into b1 values ("02002","")

从左查起,第1个字符在m中相同个数>1,则m1中有这个相同字符1个;又从第2个字符查起,在第2个及后面的字符中相同个数>1,则m1中又增加这个字符.....
运行结果如下:
程序代码:
create cursor b1 (m c(5),m1 c(3))
insert into b1 values ("1002","0")
insert into b1 values ("12123","12")
insert into b1 values ("123","")
insert into b1 values ("01110","011")
insert into b1 values ("22201","22")
insert into b1 values ("02002","020")

谢谢!

[此贴子已经被作者于2020-10-12 18:38编辑过]

2 回复
#2
吹水佬2020-10-12 20:25
只有本站会员才能查看附件,请 登录

程序代码:
create cursor b1 (m c(5),m1 c(3))
insert into b1 values ("1002","")
insert into b1 values ("12123","")
insert into b1 values ("123","")
insert into b1 values ("01110","")
insert into b1 values ("22201","")
insert into b1 values ("02002","")
cm = ""
nm = 0
ch = ""
ret = ""
REPLACE ALL m1 WITH fun()
SELECT * FROM b1
RETURN

FUNCTION fun()
    cm = ALLTRIM(m)
    nm = LEN(m)
    ret = ""
    FOR i=1 TO nm-1
        ch = SUBSTR(cm,i,1)
        FOR j=i+1 TO nm
            IF SUBSTR(cm,j,1)==ch
                ret = ret + ch
                EXIT
            ENDIF
        ENDFOR
    ENDFOR
    RETURN ret
ENDFUNCv
#3
fdqzy2020-10-12 22:05
回复 2楼 吹水佬
谢谢版主!!!
1