為何MS SQL資料庫欄位實際資料值的長度多1(其ascii值為0)? |
尚未結案
|
kevin1222
一般會員 發表:1 回覆:0 積分:0 註冊:2005-09-27 發送簡訊給我 |
請問各位前輩,
敝人使用DELPHI 7 MS SQL, 以DBEXPRESS方式寫入SQL資料庫(利用POST, APPLYUPDATES指令), 但欄位實際長度會多1, 例:欄位為 FD1, 長度為4, 內含值為 '12' 以SQL之LEN(FD1)=3, ASCII(SUBSTRING(FD1,3,1))=0, 但在DELPHI內長度卻只有2, 以致於在比對KEY值時會發生實際有該值但卻找不到的情形, 請問各位前輩指點. 註1:試過用VAR CHAR也一樣 註2:若以SQL指令來做寫入, 則不會用上述問題. 註3:若將欄位寫滿(例:寫入'1234'), 則長度也不會有多1的問題. |
canvas
一般會員 發表:6 回覆:21 積分:10 註冊:2004-01-25 發送簡訊給我 |
不必覺得奇怪, 手冊裡面是這樣寫的:
VARCHAR values are stored using as many characters as are needed, plus one byte to record the length (two bytes for columns that are declared with a length longer than 255). 在 Overview of String Types 這一個章節裡可以找得到, 我想, 這不知道跟 C 語言中以 #0 作為字串結尾有沒有關係. 用 dbExpress ? 我通常用 ZeosDBO 或是 ODBC, 只用過 dbExpress 一次, 感覺不好用 ===================引 用 kevin1222 文 章=================== 請問各位前輩, 敝人使用DELPHI 7 MS SQL, 以DBEXPRESS方式寫入SQL資料庫(利用POST, APPLYUPDATES指令), 但欄位實際長度會多1, 例:欄位為 FD1, 長度為4, 內含值為 '12' 以SQL之LEN(FD1)=3, ASCII(SUBSTRING(FD1,3,1))=0, 但在DELPHI內長度卻只有2, 以致於在比對KEY值時會發生實際有該值但卻找不到的情形, 請問各位前輩指點. 註1:試過用VAR CHAR也一樣 註2:若以SQL指令來做寫入, 則不會用上述問題. 註3:若將欄位寫滿(例:寫入'1234'), 則長度也不會有多1的問題.
編輯記錄
canvas 重新編輯於 2007-09-27 22:23:19, 註解 無‧
|
canvas
一般會員 發表:6 回覆:21 積分:10 註冊:2004-01-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |