月份
一月
二月
三月
四月
五月
六月
七月
八月
九月
十月
十一月
十二月
如果 select 月份 from 表 order by 月份,结果如下:
月份
八月
二月
九月
六月
七月
三月
十二月
十一月
十月
四月
五月
一月
按拼音排了序。
vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?
16 个解决方案
#1
另加一个编号列,然后按编号排序。
#2
不能用辅助列。
我现在在研究vfp自带的一段代码 vfpxtab.prg,把线形表转换为交叉表,排序是由它自动完成的,没法用上辅助列。
我现在在研究vfp自带的一段代码 vfpxtab.prg,把线形表转换为交叉表,排序是由它自动完成的,没法用上辅助列。
#3
干脆去掉
order by 月份
order by 月份
#4
哈哈,抱歉,没说清,"月份"是字段名。
关键是月份不按数值排序。
关键是月份不按数值排序。
#5
中文月份改为数字月份
月份
一月 1
二月 2
。
。
。
十二月 12
月份字段设为数值型不就行了,要会变通。
还有一种方法:月份改为数字后,用CAST()转换为数值型。参照VFP9.0帮助文件
SELECT CAST(月份 as n(6)) from 表 order by 月份
月份
一月 1
二月 2
。
。
。
十二月 12
月份字段设为数值型不就行了,要会变通。
还有一种方法:月份改为数字后,用CAST()转换为数值型。参照VFP9.0帮助文件
SELECT CAST(月份 as n(6)) from 表 order by 月份
#6
repl 月份 with '01' all for 月份='一月'
repl 月份 with '02' all for 月份='二月'
repl 月份 with '03' all for 月份='三月'
repl 月份 with '04' all for 月份='四月'
repl 月份 with '05' all for 月份='五月'
repl 月份 with '06' all for 月份='六月'
repl 月份 with '07' all for 月份='七月'
repl 月份 with '08' all for 月份='八月'
repl 月份 with '09' all for 月份='九月'
repl 月份 with '10' all for 月份='十月'
repl 月份 with '11' all for 月份='十一月'
repl 月份 with '12' all for 月份='十二月'
repl 月份 with '02' all for 月份='二月'
repl 月份 with '03' all for 月份='三月'
repl 月份 with '04' all for 月份='四月'
repl 月份 with '05' all for 月份='五月'
repl 月份 with '06' all for 月份='六月'
repl 月份 with '07' all for 月份='七月'
repl 月份 with '08' all for 月份='八月'
repl 月份 with '09' all for 月份='九月'
repl 月份 with '10' all for 月份='十月'
repl 月份 with '11' all for 月份='十一月'
repl 月份 with '12' all for 月份='十二月'
#7
我的问题是:
vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?
而不是有没有办法排序。
你这是有办法排序,但不是“vfp支持中文按数值排序”
我要把一个月份序列传给另一段代码处理,这段代码只接受我示例中的字符序列,而且是别人编的,我没法改。
vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?
而不是有没有办法排序。
你这是有办法排序,但不是“vfp支持中文按数值排序”
我要把一个月份序列传给另一段代码处理,这段代码只接受我示例中的字符序列,而且是别人编的,我没法改。
#8
不知道VFP能不能增加自定义序列!
好像VFP也不能按中文数字排序!
不过可以变通一下:
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这样就相当自定义了一个序列,虽然表中多了一个PX列,但可以不理嘛!
好像VFP也不能按中文数字排序!
不过可以变通一下:
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这样就相当自定义了一个序列,虽然表中多了一个PX列,但可以不理嘛!
#9
估计是做不到了,算了,结贴,散分。
#10
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这句可以呀!我试过了
这句可以呀!我试过了
#11
我的目的不是为了排序,排序肯定有办法做到。
我的问题时“vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?”
放这个序列上来,主要还是便于大家理解我所说的按中文排序。
我要把这样类似的一个序列传递给另外一段代码,由它去排序。这段代码不是我编的,我没法去改代码。而且这段代码又不接受纯数字,传数字给它,它自动转换成文字再去排序。结果还是不对。
所以只好考虑能不能改变VFP的排序规则。
再次多谢了!
#12
自定义函数呀
select 月份 from 表 order by myorder(月份)
FUNCTION myorder(v)
DIMENSION dict[12]
dict[1] = '一月'
dict[2] = '二月'
dict[3] = '三月'
dict[4] = '四月'
dict[5] = '五月'
dict[6] = '六月'
dict[7] = '七月'
dict[8] = '八月'
dict[9] = '九月'
dict[10] = '十月'
dict[11] = '十一月'
dict[12] = '十二月'
RETURN ASCAN(dict, ALLTRIM(v))
END FUNC
select 月份 from 表 order by myorder(月份)
FUNCTION myorder(v)
DIMENSION dict[12]
dict[1] = '一月'
dict[2] = '二月'
dict[3] = '三月'
dict[4] = '四月'
dict[5] = '五月'
dict[6] = '六月'
dict[7] = '七月'
dict[8] = '八月'
dict[9] = '九月'
dict[10] = '十月'
dict[11] = '十一月'
dict[12] = '十二月'
RETURN ASCAN(dict, ALLTRIM(v))
END FUNC
#13
只要是VFP做的程序,一般没有改不了的,况且楼主说程序是别人做的,你改不了,但却需要VFP支持这样的排序规则就可以解决问题!
那我的理解就是:这个程序只是一个没编译或者只是编译成VFP的APP程序。
如果是没编译的,那改不了就说不过去,如果只是编译成APP了,那也很容易进行修改!
如果是编译成EXE的,那就算VFP10出来了并支持这种排序规则,你也用不了不是!
所以我觉得,你可能只是没搞明白别人做的程序的算法而无从改起,或者你有别的目的!
至于说VFP支持什么样的排序规则,那就只有三种:pinyin,stroke,machine
至于说支持不支持“中文按数值排序”,那除非你把中文全转成数值,或者把数值能转成中文这问题就不是问题了,但通常中文不是数值,而你又不让给中文编码,那结果就是中文和数值没关系,也就不能“按”了
至于说象excel那样、自定义序列这个当然能办到了,就算是excel,它也不过是把给定序列进行编码再排序,难道excel能认识中文不成!
我的结论是:自己牙疼应该研究自己牙的事,别去折腾人家火星人有牙没有牙!
那我的理解就是:这个程序只是一个没编译或者只是编译成VFP的APP程序。
如果是没编译的,那改不了就说不过去,如果只是编译成APP了,那也很容易进行修改!
如果是编译成EXE的,那就算VFP10出来了并支持这种排序规则,你也用不了不是!
所以我觉得,你可能只是没搞明白别人做的程序的算法而无从改起,或者你有别的目的!
至于说VFP支持什么样的排序规则,那就只有三种:pinyin,stroke,machine
至于说支持不支持“中文按数值排序”,那除非你把中文全转成数值,或者把数值能转成中文这问题就不是问题了,但通常中文不是数值,而你又不让给中文编码,那结果就是中文和数值没关系,也就不能“按”了
至于说象excel那样、自定义序列这个当然能办到了,就算是excel,它也不过是把给定序列进行编码再排序,难道excel能认识中文不成!
我的结论是:自己牙疼应该研究自己牙的事,别去折腾人家火星人有牙没有牙!
#14
#15
说的好,变通是硬道理。
#16
楼主vfp支持不支持中文按数值排序;也不支持英文数值排序的
比如
oct
dec
may
june
march
能排吗?? 这种方法好像内那种语言能排得了, 好像只有PHP 有个自然数排序法 最多能把2排在11前面
你要想解决问题有很多种途径
比如
10_oct
12_dec
05_may
06_june
03_march
这样就能排了, 传给他的东西有你决定。。。。
比如
oct
dec
may
june
march
能排吗?? 这种方法好像内那种语言能排得了, 好像只有PHP 有个自然数排序法 最多能把2排在11前面
你要想解决问题有很多种途径
比如
10_oct
12_dec
05_may
06_june
03_march
这样就能排了, 传给他的东西有你决定。。。。
#1
另加一个编号列,然后按编号排序。
#2
不能用辅助列。
我现在在研究vfp自带的一段代码 vfpxtab.prg,把线形表转换为交叉表,排序是由它自动完成的,没法用上辅助列。
我现在在研究vfp自带的一段代码 vfpxtab.prg,把线形表转换为交叉表,排序是由它自动完成的,没法用上辅助列。
#3
干脆去掉
order by 月份
order by 月份
#4
哈哈,抱歉,没说清,"月份"是字段名。
关键是月份不按数值排序。
关键是月份不按数值排序。
#5
中文月份改为数字月份
月份
一月 1
二月 2
。
。
。
十二月 12
月份字段设为数值型不就行了,要会变通。
还有一种方法:月份改为数字后,用CAST()转换为数值型。参照VFP9.0帮助文件
SELECT CAST(月份 as n(6)) from 表 order by 月份
月份
一月 1
二月 2
。
。
。
十二月 12
月份字段设为数值型不就行了,要会变通。
还有一种方法:月份改为数字后,用CAST()转换为数值型。参照VFP9.0帮助文件
SELECT CAST(月份 as n(6)) from 表 order by 月份
#6
repl 月份 with '01' all for 月份='一月'
repl 月份 with '02' all for 月份='二月'
repl 月份 with '03' all for 月份='三月'
repl 月份 with '04' all for 月份='四月'
repl 月份 with '05' all for 月份='五月'
repl 月份 with '06' all for 月份='六月'
repl 月份 with '07' all for 月份='七月'
repl 月份 with '08' all for 月份='八月'
repl 月份 with '09' all for 月份='九月'
repl 月份 with '10' all for 月份='十月'
repl 月份 with '11' all for 月份='十一月'
repl 月份 with '12' all for 月份='十二月'
repl 月份 with '02' all for 月份='二月'
repl 月份 with '03' all for 月份='三月'
repl 月份 with '04' all for 月份='四月'
repl 月份 with '05' all for 月份='五月'
repl 月份 with '06' all for 月份='六月'
repl 月份 with '07' all for 月份='七月'
repl 月份 with '08' all for 月份='八月'
repl 月份 with '09' all for 月份='九月'
repl 月份 with '10' all for 月份='十月'
repl 月份 with '11' all for 月份='十一月'
repl 月份 with '12' all for 月份='十二月'
#7
我的问题是:
vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?
而不是有没有办法排序。
你这是有办法排序,但不是“vfp支持中文按数值排序”
我要把一个月份序列传给另一段代码处理,这段代码只接受我示例中的字符序列,而且是别人编的,我没法改。
vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?
而不是有没有办法排序。
你这是有办法排序,但不是“vfp支持中文按数值排序”
我要把一个月份序列传给另一段代码处理,这段代码只接受我示例中的字符序列,而且是别人编的,我没法改。
#8
不知道VFP能不能增加自定义序列!
好像VFP也不能按中文数字排序!
不过可以变通一下:
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这样就相当自定义了一个序列,虽然表中多了一个PX列,但可以不理嘛!
好像VFP也不能按中文数字排序!
不过可以变通一下:
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这样就相当自定义了一个序列,虽然表中多了一个PX列,但可以不理嘛!
#9
估计是做不到了,算了,结贴,散分。
#10
select 月份,ATC(LEFTc(月份,2),"一月二月三月四月五月六月七月八月九月十月十一十二") as px from 表 order BY px
这句可以呀!我试过了
这句可以呀!我试过了
#11
我的目的不是为了排序,排序肯定有办法做到。
我的问题时“vfp支持不支持中文按数值排序?或者象excel那样、自定义序列?”
放这个序列上来,主要还是便于大家理解我所说的按中文排序。
我要把这样类似的一个序列传递给另外一段代码,由它去排序。这段代码不是我编的,我没法去改代码。而且这段代码又不接受纯数字,传数字给它,它自动转换成文字再去排序。结果还是不对。
所以只好考虑能不能改变VFP的排序规则。
再次多谢了!
#12
自定义函数呀
select 月份 from 表 order by myorder(月份)
FUNCTION myorder(v)
DIMENSION dict[12]
dict[1] = '一月'
dict[2] = '二月'
dict[3] = '三月'
dict[4] = '四月'
dict[5] = '五月'
dict[6] = '六月'
dict[7] = '七月'
dict[8] = '八月'
dict[9] = '九月'
dict[10] = '十月'
dict[11] = '十一月'
dict[12] = '十二月'
RETURN ASCAN(dict, ALLTRIM(v))
END FUNC
select 月份 from 表 order by myorder(月份)
FUNCTION myorder(v)
DIMENSION dict[12]
dict[1] = '一月'
dict[2] = '二月'
dict[3] = '三月'
dict[4] = '四月'
dict[5] = '五月'
dict[6] = '六月'
dict[7] = '七月'
dict[8] = '八月'
dict[9] = '九月'
dict[10] = '十月'
dict[11] = '十一月'
dict[12] = '十二月'
RETURN ASCAN(dict, ALLTRIM(v))
END FUNC
#13
只要是VFP做的程序,一般没有改不了的,况且楼主说程序是别人做的,你改不了,但却需要VFP支持这样的排序规则就可以解决问题!
那我的理解就是:这个程序只是一个没编译或者只是编译成VFP的APP程序。
如果是没编译的,那改不了就说不过去,如果只是编译成APP了,那也很容易进行修改!
如果是编译成EXE的,那就算VFP10出来了并支持这种排序规则,你也用不了不是!
所以我觉得,你可能只是没搞明白别人做的程序的算法而无从改起,或者你有别的目的!
至于说VFP支持什么样的排序规则,那就只有三种:pinyin,stroke,machine
至于说支持不支持“中文按数值排序”,那除非你把中文全转成数值,或者把数值能转成中文这问题就不是问题了,但通常中文不是数值,而你又不让给中文编码,那结果就是中文和数值没关系,也就不能“按”了
至于说象excel那样、自定义序列这个当然能办到了,就算是excel,它也不过是把给定序列进行编码再排序,难道excel能认识中文不成!
我的结论是:自己牙疼应该研究自己牙的事,别去折腾人家火星人有牙没有牙!
那我的理解就是:这个程序只是一个没编译或者只是编译成VFP的APP程序。
如果是没编译的,那改不了就说不过去,如果只是编译成APP了,那也很容易进行修改!
如果是编译成EXE的,那就算VFP10出来了并支持这种排序规则,你也用不了不是!
所以我觉得,你可能只是没搞明白别人做的程序的算法而无从改起,或者你有别的目的!
至于说VFP支持什么样的排序规则,那就只有三种:pinyin,stroke,machine
至于说支持不支持“中文按数值排序”,那除非你把中文全转成数值,或者把数值能转成中文这问题就不是问题了,但通常中文不是数值,而你又不让给中文编码,那结果就是中文和数值没关系,也就不能“按”了
至于说象excel那样、自定义序列这个当然能办到了,就算是excel,它也不过是把给定序列进行编码再排序,难道excel能认识中文不成!
我的结论是:自己牙疼应该研究自己牙的事,别去折腾人家火星人有牙没有牙!
#14
#15
说的好,变通是硬道理。
#16
楼主vfp支持不支持中文按数值排序;也不支持英文数值排序的
比如
oct
dec
may
june
march
能排吗?? 这种方法好像内那种语言能排得了, 好像只有PHP 有个自然数排序法 最多能把2排在11前面
你要想解决问题有很多种途径
比如
10_oct
12_dec
05_may
06_june
03_march
这样就能排了, 传给他的东西有你决定。。。。
比如
oct
dec
may
june
march
能排吗?? 这种方法好像内那种语言能排得了, 好像只有PHP 有个自然数排序法 最多能把2排在11前面
你要想解决问题有很多种途径
比如
10_oct
12_dec
05_may
06_june
03_march
这样就能排了, 传给他的东西有你决定。。。。