mysql+odbc 用 order by 或 IndexFieldNames 排序結果不同 |
尚未結案
|
a123473119
一般會員 ![]() ![]() 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
求教各位先進:
小弟有三筆資料,用 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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |