oracle 修改账号密码Oracle无奈的Char与Varchar

Oracle无奈的Char与Varchar

 

摘要: Orcale无奈的Char与Varchar

 

最近在做一个项目,不知道是因为原因要气数据对齐,一开始把数据库所有的字符全都定义成了Char类型,这样导致数据包含N多空格,在做测试Demo的时候就发现各种不爽了,很多可以在PLSQL里欢快的SQL用程序跑的话一准各种迷茫,现在整理总结一下,前车之鉴吧: (环境是VS2010 .net 4.0 和ORacle 10G)

 

oracle账号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));

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。