Delphi 與 SQL Collation 的排序不同 |
尚未結案
|
andyclt
一般會員 發表:1 回覆:0 積分:0 註冊:2012-12-29 發送簡訊給我 |
最近遇到一個 Delphi 與 SQL Collation 的問題如下, 需要向各位求教 :
SQL 版本 : 2008R2 SQL Collation : Chinese_Traditional_Stroke_Order_100_CI_AS Delphi 版本 : Delphi 5 Client Side 主機的地區 : 台灣 最初發現的問題是, 在 Delphi Program 介面看見 Grid 的排序與 SQL Stored Procedure 處理的結果不一樣, 後來發現這與 SQL 的 Collation 有關. 在上述的 SQL Server 執行以下的 Statement, 結果是 "Wrong", 需然"-" 的 ASCII 碼是 45, 而 '~' 是 126, 但 SQL (因 Collation 關係) 會排 'a-c' 比 'a~c' 後. if ('a-c' < 'a~c') select 'Correct' as result else select 'Wrong' as result 上網查看以後, 把 Database 的 Collation 設為 Chinese_Taiwan_Stroke_BIN, 以後排序就正常了, 但這又引申一個問題, 所有 SQL 命令的欄位 (e.g. 欄位名稱是 fldname1, Select FLDname1 便會出錯) 的大小寫都一定要與 table 一樣, 否則便出錯誤. 因為現時系統已很龐大, 要逐一修改 SQL 語句 相當困難. 所以想請教大家, 有沒有什麼簡單一些的方法可以處理. 如 : 可否令 Delphi 以與 SQL Collation 同一排序方式 ? 謝謝各位 !
------
普通人 |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
1.將資料庫的table和欄位名稱都改成大寫
2.修改TQuery(資料庫相關VCL)的Source 將傳進的SQL指令都變成大寫 ===================引 用 andyclt 文 章=================== 最近遇到一個 Delphi 與 SQL Collation 的問題如下, 需要向各位求教 : SQL 版本 : 2008R2 SQL Collation : Chinese_Traditional_Stroke_Order_100_CI_AS Delphi 版本 : Delphi 5 Client Side 主機的地區 : 台灣 最初發現的問題是, 在 Delphi Program 介面看見 Grid 的排序與 SQL Stored Procedure 處理的結果不一樣, 後來發現這與 SQL 的 Collation 有關. 在上述的 SQL Server 執行以下的 Statement, 結果是 "Wrong", 需然"-" 的 ASCII 碼是 45, 而 '~' 是 126, 但 SQL (因 Collation 關係) 會排 'a-c' 比 'a~c' 後. if ('a-c' < 'a~c') select 'Correct' as result else select 'Wrong' as result 上網查看以後, 把 Database 的 Collation 設為 Chinese_Taiwan_Stroke_BIN, 以後排序就正常了, 但這又引申一個問題, 所有 SQL 命令的欄位 (e.g. 欄位名稱是 fldname1, Select FLDname1 便會出錯) 的大小寫都一定要與 table 一樣, 否則便出錯誤. 因為現時系統已很龐大, 要逐一修改 SQL 語句 相當困難. 所以想請教大家, 有沒有什麼簡單一些的方法可以處理. 如 : 可否令 Delphi 以與 SQL Collation 同一排序方式 ? 謝謝各位 ! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |