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));
相关文章
相关标签/搜索