当前位置:数据库 > Oracle >>

Oracle无奈的Char与Varchar

Oracle无奈的Char与Varchar
 
摘要: Orcale无奈的Char与Varchar
 
最近在做一个项目,不知道是因为原因要气数据对齐,一开始把数据库所有的字符全都定义成了Char类型,这样导致数据包含N多空格,在做测试Demo的时候就发现各种不爽了,很多可以在PLSQL里欢快的SQL用程序跑的话一准各种迷茫,现在整理总结一下,前车之鉴吧: (环境是VS2010 .net 4.0 和ORacle 10G)
 
1.Oracle 字段Char定义时,如果包含空格,应该Trim后在使用。 假定一个char 类型的开头或者结尾字段包含一个或多个空格,代码中应该也保证这些空格的存在,特别是查询的时候。
 
 
苦逼的是俩句话在PL——SQL中效果是一样的,搬进代码里就不是一个爹妈了。 例如:
 
1
select * from PARS_EVALUATION t
2
where t.id = 'd2887a3d-e68a-4e3a-9473-27019ba7db7 '
3
 
4
<!-- lang: sql -->
5
select * from PARS_EVALUATION t
6
where TRIM(t.id) = 'd2887a3d-e68a-4e3a-9473-27019ba7db7'
2.SQL参数设定时,对于Char类型应使用 DbType.StringFixedLength (nchar) 或者 DbType.AnsiStringFixedLength(char) ,如果非要使用 DbType.String 话,对不起就擎等着麻烦吧(遇到空格包挂)。 例如:
 
1
_BlockName = "InsertSQL";
2
<!-- lang: c# -->
3
_TargetName = "Insert";
4
<!-- lang: c# -->
5
 parameters.Add(new DBParameter(":V_ID", Guid.NewGuid().ToString(), DbType.AnsiStringFixedLength));
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,