PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   求教MS SQL的問題.. (https://www.pcdvd.com.tw/showthread.php?t=832903)

vxr 2008-12-25 02:28 AM

求教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控制項的情況下..
我要如何把後面那堆空白打消呢??..
一堆"..."
看不大順眼..!!:flash:...
煩請各位高手解答一下..

謎之聲:
TMD..老闆真是不要我的命...
最近趕案子寫程式寫得昏天暗地的..
另外有時候真想一巴掌往PM頭上巴下去...:tu:..
TNND...明年去做健檢好了..

Devil 2008-12-25 08:34 AM

請先區分清楚char,varchar,nchar,nvarchar的型態差異
可查MS SQL線上手冊,或是 MSDN網站

flashlin 2008-12-25 09:34 AM

這個問題在Oracle 也是會這樣阿~
奇怪的問題~ 不像是懂Oracle 說出來的問題!? :flash:

EIGHTS 2008-12-25 09:54 AM

嗯...
會 Transact-SQL 應該也不會有這個問題

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

Xforce 2008-12-25 10:01 AM

nchar 是固定長度的字串 所以不管你資料實際多長,MSSQL都會幫你PADDING到
欄位長度

nvchar才是變動長度字串,在限定的欄位長度內,字串長度有別

vxr 2008-12-25 02:19 PM

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

ks_stone 2008-12-25 02:27 PM

char 跟 varchar 型態的差異,
冠上n只是支援Unicode,
MS SQL的help寫的很棒很詳盡,多多利用.

短字串或是固定字串請用char,
不固定字串請用varchar,
在大量資料時,儲存空間跟效率會有些許差別....

ks_stone 2008-12-25 02:36 PM

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


select rtrim(field)

試試看...

Devil 2008-12-25 05:23 PM

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

更改欄位型態為varchar "原始資料" 當然還是會存在空白
因為該欄位的值就已經是含有空白的字串了
例如char(10) "123 " 轉換為 varchar(10) "123 "
當然還是會有空白,要知道,空白也是"值"
只是當你下次"修改","新增"欄位值 "123"時,varchar(10)所存的值不會替你補上7個空白
若要修改原始資料,請下一次update命令吧
建議您還是找本資料庫的書來看一下會比較好 :ase


所有的時間均為GMT +8。 現在的時間是09:01 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。