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

mysql+odbc 用 order by 或 IndexFieldNames 排序結果不同

尚未結案
a123473119
一般會員


發表:19
回覆:46
積分:18
註冊:2002-08-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-16 23:18:51 IP:211.76.xxx.xxx 未訂閱
求教各位先進: 小弟有三筆資料,用 TZmysqlQuery dbgrid 只要秀出其中一個欄位 cuno 若 TZmysqlQuery 內用 indexfieldnames=cuno 其排序結果為 650-10-4 , 650-1-1 , 650-11-1 若不用其indexfieldnames , 直接用 order by cuno 其排序結果卻為 650-1-1 , 650-10-4 , 650-11-1 將欄位改成 binary 也是如此. 用 indexfieldbynames 之原因是可在不關檔之情況下改變排序. 求助各位先進解惑.
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-19 05:04:11 IP:203.204.xxx.xxx 未訂閱
a123473119 你好     這個問題,我之前也有發現到,我是用TClientDataSet.IndexFieldNames(AddIndex也一樣),站上也問過了,但一直都沒人回應,自已也找了好久,也是都找不到答案(原因),卻發現其排序的規則:'-'號只比長度不比值(好奇怪的現象),什麼是[只比長度不比值]呢?ok!以下列出其排序的原則: 1.把所有的'-'號移除後才排序 以你的例子為650-10-4 , 650-1-1 , 650-11-1 改成650104 , 65011 , 650111 然後排序 ,就是你所看到的排序結果 2.當移除'-'號後的值一樣時,就比那個的'-'多囉 如:1234,1234- 則有'-' 號的那個值比較大喔 如:1234,123-4 則有'-' 號的那個值比較大喔 或許還有其他的狀況及原則,沒有理出來的或真正找出其原因更好,大家可以一起討論、測試。 _______________________________________ 深藍的魚,祝您好運..........連連
a123473119
一般會員


發表:19
回覆:46
積分:18
註冊:2002-08-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-25 21:03:54 IP:211.76.xxx.xxx 未訂閱
感謝 Chance36 前輩. 因案子較趕, 無法深究, 暫用 order by 去 pass 掉. 小弟倒是覺得 sort 程序應該不會寫的如此複雜,頂多來個 判斷大於或小於,只是不了誰負責了此工作. 謝謝 Chance36;
系統時間:2024-09-11 6:56:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!