[ASP.NET][SQL](note)if判別失效,原來是「值」含有空白字元

摘要:[ASP.NET][SQL]if判別失效,原來值含有空白字元

小小發現:

在前台寫if 某textbox =某資料表欄位表值時,常常if的判別會出問題,

原來該值在資料庫中本來就含空白了,故你if再怎麼去等於或else ,就是無法正確跑完if判別式…

若資料欄格式是「nchar」,當該欄位的字串中有空白的話,

就算手動去把該資料欄位的值刪除該空白並儲存,回頭發現該字串後面空白仍然還在,

故試著去把DB中的該欄位的型態改成「varnchar」後,

再手動去把該資料欄位的值刪除該空白,才算是真正刪除空白,

這樣前台的if 某textbox =某資料表欄位表值時才不會有問題。

 

  • Ps: SQL Server: RTRIM( ), LTRIM( ) 用來去除空白的這個涵數我知道,只是心得發現上述情況。

補充說明一下:

使用資料庫儲存文字的資料,在資料庫中會有以下這些的型態可以設定
char, varchar, nchar, nvarchar
那麼到底要用哪種型態比較適合,這些型態之間有何差異呢??

意義與差異

從這些字眼上來看,都是有char,差別在var與n這兩個字眼,那麼就先來簡單介紹一下這兩個字眼代表的意義:

var不定長度→有多長存多長

n:Unicode→無論英文、數字、中文、日文、...每個字都占2Byte。

char與nchar宣告的是固定的長度,因此如果宣告char(5),
但是只放a這個字,那麼就會補另外4個空白,會補空白補滿是char的特性
而nchar(5)也是會放滿5個字,但是每個字無論中英數都會用2個Bytes來存放

varchar與nvarchar都是不定長度,因此如果宣告varchar(5),但是只放a這個字,那麼就會放一個a,不會補空白
而如果宣告nvarhcar(5)那還是只放a這個字,但是會用2Bytes來存放。
如果放了【】這個中文字,在varchar會占用2個位子,但是nvarchar指占用1個位子。

舉個例子來看

假設有四個欄位,分別放入【a1中】這樣的字串,比較一下這些的差異如下:

 

FM:

http://itgroup.blueshop.com.tw/topcat/aspx?n=convew&i=997

 
--
強烈建議購物網店或實體店家都必須使用關鍵字廣告or原生廣告來將Yahoo上與聯播網的廣大流量導至自己的網站!

●Yahoo關鍵字廣告/原生廣告
◆Yahoo廣告方案介紹 : https://goo.gl/5k8FHW
◆Yahoo廣告剖析與運用 : http://goo.gl/4xjUJD

 

​​