| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1827 人关注过本帖
标题:字符重新排列
只看楼主 加入收藏
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
结帖率:73.97%
收藏
已结贴  问题点数:20 回复次数:12 
字符重新排列
程序代码:
create cursor b1 (m1 c(3),m2 c(3))
insert into b1 values ('132','123')
insert into b1 values ('301','013')
insert into b1 values ('132','123')
insert into b1 values ('211','112')
insert into b1 values ('121','112')
insert into b1 values ('200','002')

如何使m1得到m2的结果?
谢谢!

[此贴子已经被作者于2021-8-4 16:49编辑过]

搜索更多相关主题的帖子: values 排列 字符 into insert 
2021-08-04 16:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:5 
字符排序
2021-08-04 17:02
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4946
注 册:2013-2-16
收藏
得分:5 
可以直接利用Sql查询来排序,效率不一定高,但是代码简单,避开了排序算法本身.
程序代码:
create cursor b1 (m1 c(3),m2 c(3) ,m3 c(3))
insert into b1 values ('132','123','')
insert into b1 values ('301','013','')
insert into b1 values ('132','123','')
insert into b1 values ('211','112','')
insert into b1 values ('121','112','')
insert into b1 values ('200','002','')

UPDATE b1 SET b1.m2 = func_px(b1.m1) 
UPDATE b1 SET b1.m3 = func_px(b1.m1,.t.)   && 倒序排列

FUNCTION func_px(str1  as String ,SortDesc as Boolean)
* 参数1,欲排序的字符串,参数2,输出倒序还是正常顺序? 默认正常排序.
    IF USED('_px') THEN 
        USE IN _px
    ENDIF 
    CREATE CURSOR _px (s1 C(1))
    LOCAL ii as Integer ,str2 as String
    str2=""
    FOR ii = 1 TO LEN(str1) 
        INSERT INTO _px VALUES (SUBSTR(str1,ii,1))
    ENDFOR 
    IF SortDesc
        SELECT s1 FROM _px INTO CURSOR _px2 ORDER BY s1 DESC 
    ELSE 
        SELECT s1 FROM _px INTO CURSOR _px2 ORDER BY s1    
    ENDIF 
    
    USE IN _px
    SELECT _px2
    GO TOP 
    SCAN 
        str2 = str2 + _px2.s1 
    ENDSCAN 
    USE IN _px2
    RETURN str2 
ENDFUNC 


也可以利用数组,先装入数组,再用Asort()排序.这个就不举例了.
但是Asort()只能对字符型排序,而上面这个算法,数值型,日期型都可以排序.

[此贴子已经被作者于2021-8-4 17:26编辑过]

2021-08-04 17:16
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用厨师王德榜在2021-8-4 17:16:40的发言:


也可以利用数组,先装入数组,再用Asort()排序.这个就不举例了.
但是Asort()只能对字符型排序,而上面这个算法,数值型,日期型都可以排序.


Asort()这个排序我没看懂帮助,怎样排序最简单?


[此贴子已经被作者于2021-8-4 18:16编辑过]

2021-08-04 18:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
    ALINES(arr,TRANSFORM(m1,"@R #,#,#"), ",")
    ASORT(arr)
2021-08-04 18:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
假设字符串固定长度3,简化算式
程序代码:
create cursor b1 (m1 c(3))
insert into b1 values ('132')
insert into b1 values ('301')
insert into b1 values ('211')
insert into b1 values ('200')
SELECT m1,fun(m1) m2 FROM b1

FUNCTION fun(m)
    ALINES(arr,TRANSFORM(m,"@R #,#,#"), ",")
    ASORT(arr)
    RETURN arr[1]+arr[2]+arr[3]
ENDFUNC
2021-08-04 18:26
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用厨师王德榜在2021-8-4 17:16:40的发言:


而上面这个算法,数值型,日期型都可以排序.

谢谢!!!,

[此贴子已经被作者于2021-8-4 18:35编辑过]

2021-08-04 18:30
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用吹水佬在2021-8-4 18:26:20的发言:

假设字符串固定长度3,简化算式
create cursor b1 (m1 c(3))
insert into b1 values ('132')
insert into b1 values ('301')
insert into b1 values ('211')
insert into b1 values ('200')
SELECT m1,fun(m1) m2 FROM b1

FUNCTION fun(m)
    ALINES(arr,TRANSFORM(m,"@R #,#,#"), ",")
    ASORT(arr)
    RETURN arr[1]+arr[2]+arr[3]
ENDFUNC

谢谢!
一定要用自定义才行?
2021-08-04 18:38
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
回复 6楼 吹水佬
看懂了,不用自定义也行!
2021-08-04 18:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9810
专家分:26997
注 册:2012-2-5
收藏
得分:5 
要学会变通,不用自定义函数,代码如下
程序代码:
create cursor b1 (m1 c(3), m2 c(3))
insert into b1 values ('132', '')
insert into b1 values ('301', '')
insert into b1 values ('211', '')
insert into b1 values ('200', '')
SCAN
    ALINES(arr,TRANSFORM(m1,"@R 9,9,9"), ",")
    ASORT(arr)
    REPLACE m2 WITH arr[1]+arr[2]+arr[3]
ENDSCAN
BROWSE

坚守VFP最后的阵地
2021-08-04 18:59
快速回复:字符重新排列
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073660 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved