PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
vxr
Elite Member
 
vxr的大頭照
 

加入日期: May 2002
您的住址: 地球的上面..
文章: 5,854
Exclamation 求教MS SQL的問題..

敝人最近因公司的需要..
不得已..
只好碰C#(之前學了JAVA/JSP/JDBC,C/C++/MFC,Oracle..又多加了一個了..Orz..)

我以前只學過Oracle(也有小碰過MySQL..)..
現在跳到MS SQL..
有一個問題想請教..
個人自己假設寫了這段:
public void setDGV(DataGridView dgv){
dgv.DataSource=this.dView.Table.DefaultView;
}

最後DataGridView的介面顯示會是從View(視關表)抓出來的暫時資訊...
不過會有一個怪情況..
假設某個欄位的大小..
例如是nchar(255)..
如果我只用掉4bytes..
也就是4個英文字元的情況下..
她還會剩251可用..
問題就是..
我只有用到4個字元..
可是在MS SQL的情況下..
她依然會把剩下的251bytes用不到的空間當成空白通通算進去..
這樣會被拖很長..
有些時候我可以把裡面資訊取出來轉成string用Trim()打消後面空白..
可是在DataGridView控制項的情況下..
我要如何把後面那堆空白打消呢??..
一堆"..."
看不大順眼..!!...
煩請各位高手解答一下..

謎之聲:
TMD..老闆真是不要我的命...
最近趕案子寫程式寫得昏天暗地的..
另外有時候真想一巴掌往PM頭上巴下去.....
TNND...明年去做健檢好了..
     
      
舊 2008-12-25, 02:28 AM #1
回應時引用此文章
vxr離線中  
Devil
Power Member
 

加入日期: Jan 2001
您的住址: Taipei
文章: 503
請先區分清楚char,varchar,nchar,nvarchar的型態差異
可查MS SQL線上手冊,或是 MSDN網站
 
__________________
舊 2008-12-25, 08:34 AM #2
回應時引用此文章
Devil離線中  
flashlin
Regular Member
 

加入日期: Dec 2004
文章: 65
這個問題在Oracle 也是會這樣阿~
奇怪的問題~ 不像是懂Oracle 說出來的問題!?
舊 2008-12-25, 09:34 AM #3
回應時引用此文章
flashlin離線中  
EIGHTS
Master Member
 
EIGHTS的大頭照
 

加入日期: Nov 2000
您的住址: 新開的店
文章: 1,586
嗯...
會 Transact-SQL 應該也不會有這個問題

如果不能動型態
在 select 時,加入 RTRIM() 就可以了

此文章於 2008-12-25 09:56 AM 被 EIGHTS 編輯.
舊 2008-12-25, 09:54 AM #4
回應時引用此文章
EIGHTS離線中  
Xforce
Senior Member
 
Xforce的大頭照
 

加入日期: Feb 2002
您的住址: 宜蘭
文章: 1,341
nchar 是固定長度的字串 所以不管你資料實際多長,MSSQL都會幫你PADDING到
欄位長度

nvchar才是變動長度字串,在限定的欄位長度內,字串長度有別
__________________
AMD Athlon 64 3000+
Asus A8N-E nfoce 4 empowered
Simems DDR 400 512MB *2
Benq 1640
---------------------------------
舊 2008-12-25, 10:01 AM #5
回應時引用此文章
Xforce離線中  
vxr
Elite Member
 
vxr的大頭照
 

加入日期: May 2002
您的住址: 地球的上面..
文章: 5,854
Exclamation

有人說用varchar..
可是那幾個我都試過了..
MS SQL都還是會留下那3個"..."
我在DataGridView控制項看的情況是這樣的..

此文章於 2008-12-25 02:23 PM 被 vxr 編輯.
舊 2008-12-25, 02:19 PM #6
回應時引用此文章
vxr離線中  
ks_stone
Senior Member
 

加入日期: Dec 2001
文章: 1,383
char 跟 varchar 型態的差異,
冠上n只是支援Unicode,
MS SQL的help寫的很棒很詳盡,多多利用.

短字串或是固定字串請用char,
不固定字串請用varchar,
在大量資料時,儲存空間跟效率會有些許差別....
舊 2008-12-25, 02:27 PM #7
回應時引用此文章
ks_stone離線中  
ks_stone
Senior Member
 

加入日期: Dec 2001
文章: 1,383
引用:
作者vxr
有人說用varchar..
可是那幾個我都試過了..
MS SQL都還是會留下那3個"..."
我在DataGridView控制項看的情況是這樣的..


select rtrim(field)

試試看...
舊 2008-12-25, 02:36 PM #8
回應時引用此文章
ks_stone離線中  
Devil
Power Member
 

加入日期: Jan 2001
您的住址: Taipei
文章: 503
引用:
作者vxr
有人說用varchar..
可是那幾個我都試過了..
MS SQL都還是會留下那3個"..."
我在DataGridView控制項看的情況是這樣的..

更改欄位型態為varchar "原始資料" 當然還是會存在空白
因為該欄位的值就已經是含有空白的字串了
例如char(10) "123 " 轉換為 varchar(10) "123 "
當然還是會有空白,要知道,空白也是"值"
只是當你下次"修改","新增"欄位值 "123"時,varchar(10)所存的值不會替你補上7個空白
若要修改原始資料,請下一次update命令吧
建議您還是找本資料庫的書來看一下會比較好
__________________
舊 2008-12-25, 05:23 PM #9
回應時引用此文章
Devil離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是02:17 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。