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

SQL 找不到中文記錄

答題得分者是:P.D.
lafite
一般會員


發表:4
回覆:7
積分:2
註冊:2003-08-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-03 17:34:31 IP:210.177.xxx.xxx 訂閱
平台:delphi 5 + MS-SQL 2003 (英文版)

資料庫裡的 stdName 是用nchar, 當我用中文名稱作為搜索時, 就會找不到任何記錄
他傳回的 record count 是 0. 英文名搜索是沒問題的. 還有是中文名顯示和列印都是沒問題的.
我也嘗試設定 Auto Translate = true. 若設為 true 就會找到一堆亂碼的記錄.
所以請問各位大大, 以下的sql在那裡出了錯誤.


[code delphi]
ADOQstd.Active := False;
ADOQstd.SQL.Clear;
ADOQstd.SQL.Add('select stdTBL."stdNo",stdTBL."stdName"');
ADOQstd.SQL.Add('from stdTbl');
ADOQstd.SQL.Add('where stdTBL."stdName" like :txdata');
ADOQstd.SQL.Add('order by stdTBL."stdNo"');
ADOQstd.Parameters.ParamByName('txdata').Datatype := ftString;
ADOQstd.Parameters.ParamByName('txdata').Value := '%' EdName.text '%';
ADOQstd.Active := true;
[/code]
lafite
一般會員


發表:4
回覆:7
積分:2
註冊:2003-08-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-06 16:00:48 IP:210.177.xxx.xxx 訂閱
我嘗試過測驗過 access 和 SQL 2003
發現用想同的一個程式碼, 只是更改了 AOD Connection
Access 是可以中文來搜索. 而 SQL 2003 就會是找不到

測試一
D5 Access 的 database, 而 field type 試為 char ,
Database 輸入中文內容後, 可成功搜索

測試二
D5 SQL 2003 的 database, 而 field type 試為 char ,
Database 輸入中文內容後, 變成亂碼

測試三
D5 SQL 2003 的 database, 而 field type 試為 nchar ,
Database 輸入中文內容後, 但找不到記錄

請問各位大大, 這樣的測試是不是能代表是 SQL 2003 的內部問題呢
若果要成功在 SQL 2003 裡找到中文記錄, 要如何修改 SQL 2003 .
請各位大大幫幫忙. 謝謝.
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-06 18:21:56 IP:61.62.xxx.xxx 訂閱


建議你先用SQL Porfilter觀察用戶端送上來的Command


P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-07 11:48:41 IP:61.67.xxx.xxx 未訂閱
首先, 你要先完全了解 char, nchar, varchar 的不同點, 如果不清楚, 這裡有一篇可供參考
http://blog.blueshop.com.tw/topcat/archive/2007/09/06/52318.aspx

再來, nchar是unicode 型態, delphi目前為止沒有任何元件支援unicode, 所以不管你怎麼測都是不對, 除非使TNT
第三, SQL中被定義為nchar的型態欄位, 在delphi中必須宣告變數為 widestring 才可以使用(很久沒使用nchar格式, 我記得應該是這樣)
系統時間:2024-05-02 8:30:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!