全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2648
推到 Plurk!
推到 Facebook!

SQL中文字排序方式?

答題得分者是:hagar
TTS
初階會員


發表:72
回覆:66
積分:27
註冊:2003-05-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-24 20:46:11 IP:122.100.xxx.xxx 訂閱
DB: Informix

Table: A

在A中有個A_Code欄位, 如果Order By A_Code則為:
1-1
1-11
1-12
1-2
1-21
1-22

如果想要此欄位排列出來的資料為:
1-1
1-2
1-11
1-12
1-21
1-22

不知道能以什麼方式排列成小弟想要的方式?
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-24 22:33:14 IP:124.10.xxx.xxx 訂閱
一般的排序都是依照字典順序,也就是一個字一個字的比較
你要的是先依照長度比較,然後才是一個字一個字的比較
我建議你用運算式把你要的資料後面補空白,補成一樣長之後再來排序
就是你要的結果了
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
TTS
初階會員


發表:72
回覆:66
積分:27
註冊:2003-05-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-24 22:57:45 IP:122.100.xxx.xxx 訂閱
大大您說的先依運算式補空白  我不太懂你的意思耶?!  
在依原資料狀況下 怎麼用SQL補空白在來判斷呢?
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-24 23:14:49 IP:124.10.xxx.xxx 訂閱
抱歉,先前沒有嘗試就回答
先比長度再比字元應該要自己寫程式來處理了,光用 SQL 語法沒法做到

============== 腦殘分隔線 ==============
我想到了,我以 SQL Server 舉例

SELECT LEN(A_Code) as A_Code_Len, A_Code
FROM A
ORDER BY A_Code_Len, A_Code

LEN 是 SQL SERVER 中取字串長度的函數,在 Infomix 中應該也有同樣功能的函數
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2008-09-24 23:22:18, 註解 無‧
TTS
初階會員


發表:72
回覆:66
積分:27
註冊:2003-05-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-25 00:22:33 IP:122.100.xxx.xxx 訂閱
小弟試了一下  Informix不支援此語法  
會有"Routine (Len) can not be resolved." 的錯誤訊息!!
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-25 07:47:38 IP:124.10.xxx.xxx 訂閱
Informix 裡面用 LENGTH()
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-09-25 08:55:02 IP:61.218.xxx.xxx 未訂閱
試試如下的方式, 不過我是在 SQL 2000 下:

select * from A order by cast(substring(ACode, 1, 1) as int), cast(substring(A_Code, 3, len(A_Code)) as int)
TTS
初階會員


發表:72
回覆:66
積分:27
註冊:2003-05-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-09-25 14:30:54 IP:122.100.xxx.xxx 訂閱
非常感謝sryang的協助, 您的Length是正確的
不過比較過hagar的答案, 可能hagar大大的方式會更正確
所以我就把答題者給hagar囉!
=Tks=
系統時間:2024-11-24 20:02:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!