線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1396
推到 Plurk!
推到 Facebook!

关于排序的问题

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-29 11:22:07 IP:218.20.xxx.xxx 未訂閱
请教各位前辈: 我现在希望在quickreport里面按照brand(先排完大写的,再排小写的)来排序,由于brand这个field里面的值有小写的,也有大写的,比如说这样: abc adb ndm ... FRD NIK PUL ... 而简单的用order by brand (desc or asc),我试过都达不到效果,会出现这样的结果: FRD NIK ndm PUL ...(大写部分) abc abd ...(小写部分) 我希望是按照ASCII排序,排完所有大写再排小写部分,请问要怎么做?谢谢!
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-08 13:46:57 IP:58.33.xxx.xxx 未訂閱
你转换成ASCII后排序啊
NO.5
初階會員


發表:18
回覆:35
積分:25
註冊:2005-02-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-09 15:40:27 IP:210.64.xxx.xxx 未訂閱
請問你是使用哪一種資料庫呢? 在Oracle9i中,Field屬性varchar2,直接使用ORDER BY的功能,就符合你的要求.
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-12 11:34:20 IP:218.19.xxx.xxx 未訂閱
hi,NO.5 我使用的就是Oracle9i,而且brand这个field的属性也是varchar2,使用orderby 达不到效果。    请问用什么办法可以比较小写与大写的大小? 比如说用order by对brand进行排序,会按照Abc,abc,Dj,dj..这样排序 我在出报表之前,会有两个dblookupcombobox用于选择brand,同时要检查后者必须大于前者,如果我前一个选择abc,后一个选择Dj,就会出现自定义的错误信息,怎样避免这种情况,也就是说让abc
NO.5
初階會員


發表:18
回覆:35
積分:25
註冊:2005-02-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-12 16:14:53 IP:210.64.xxx.xxx 未訂閱
首先,內容被截掉了. 在9i中英數字就是依照ASCII儲存,所以Field內容大小寫有別,依照ASCII碼,小寫字母本就比大寫字母來的大,使用order by就會顯示A..,B..,C..,a..,b..,c..,若要依照A..,a..,B..,b..,C..,c..排序,在order by要加上upper(),請參考下例: SQL>select * from yuh;{資料輸入順序} AA ------ abd ndm FRD abc adb PUL NIK ABD nik SQL>select * from yuh order by aa{先顯示所有大寫,再顯示所有小寫} AA ------ ABD FRD NIK PUL abc abd adb ndm nik SQL>select * from yuh order by upper(aa),substr(aa,1,1){依照內容,先顯示大寫,再顯示小寫} AA ------ abc ABD abd adb FRD ndm NIK nik PUL
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-12 17:10:35 IP:218.19.xxx.xxx 未訂閱
现在的问题是: 我在SQL Explorer里面用“select brand from brand_master order by brand”作测试,出来的结果好像这样: brand ------- Clock IBC IWC Seiko ii kk .... 但是我用一个SQLQuery,使用“select brand from brand_master order by brand”,将结果显示在DBLookupcombobox里面,出来的结果却是这样: brand ------ Clock IBC ii IWC kk Seiko .... 同样的SQL语句在quickrepor里面出来的结果也是按照第二种情况这样排序,都不明白为什么?
NO.5
初階會員


發表:18
回覆:35
積分:25
註冊:2005-02-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-13 14:12:37 IP:210.64.xxx.xxx 未訂閱
由顯示結果而言,應該是經過類似ORDER BY UPPER()的處理,個人以BDE元件實作的結果,並不會發生在SQL PLUS與DBLookupcombobox或quickrepor結果不同的現象. 建議用乾淨的環境測試,或是別去使用原來的BDE元件,使用新的BDE元件,或是有時問題不在*.PAS,而是在*.DFM中.
系統時間:2024-05-02 7:45:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!