Orcale無奈的Char與Varchar

最近在作一個項目,多是由於要數據對齊,一開始把數據庫全部的字符全都定義成了固定長度的Char類型,這樣致使長度不足的數據包含N多空格,在作測試Demo的時候就發現各類不爽了,不少能夠在PLSQL裏歡快的SQL用程序跑的話一準各類迷茫,如今整理總結一下,前車可鑑吧: (環境是VS2010 .net 4.0 和ORacle 10G)sql

1.Oracle 字段Char定義時,若是包含空格,應該Trim後在使用。 假定一個char 類型的開頭或者結尾字段包含一個或多個空格,代碼中應該也保證這些空格的存在,特別是查詢的時候。數據庫

苦逼的是倆句話在PL——SQL中效果是同樣的,搬進代碼裏就不是一個爹媽了。

苦逼的是倆句話在PL——SQL中效果是同樣的,搬進代碼裏就不是一個爹媽了。 例如:c#

<!-- lang: sql -->
select * from PARS_EVALUATION t
where t.id = 'd2887a3d-e68a-4e3a-9473-27019ba7db7 '

<!-- lang: sql -->
select * from PARS_EVALUATION t
where TRIM(t.id) = 'd2887a3d-e68a-4e3a-9473-27019ba7db7'

2.SQL參數設定時,對於Char類型應使用 DbType.StringFixedLength (nchar) 或者 DbType.AnsiStringFixedLength(char) ,若是非要使用 DbType.String 話,對不起就擎等着麻煩吧(遇到空格包掛)。 例如:測試

<!-- lang: c# -->
_BlockName = "InsertSQL";
<!-- lang: c# -->
_TargetName = "Insert";
<!-- lang: c# -->
 parameters.Add(new DBParameter(":V_ID", Guid.NewGuid().ToString(), DbType.AnsiStringFixedLength));
相關文章
相關標籤/搜索