select count(*) into v_count from testTable where id0000 = v_id0000;
上面这条语句是某一个函数中的一条SQL语句,
其中v_id0000是函数的一个变量,类型为varchar2(20),
而id0000是testTable的一个字段,类型为char(19),
这种情况即使testTable表中有与v_id0000对应的记录,v_count也会是0,结果是错误的,必须把v_id0000的类型设置为char(19),这样v_count才不会是0,结果才会是正确的。
问题原因:
char(length)类型的字段,如果你字段实际的值的长度比你定义的char类型的length小时,oracle会自动在后面填充空格,直到字段的长度达到你定义的length大小;举个例子:你定义了一个名为field1的字段,类型为char(6),然后你给这个字段赋值“aa”,赋值后实际的值会变成“aa ”(后面自动被填充了4个空格);