读书人

急死了,求char(30)字段查询匹配的有关

发布时间: 2012-12-24 10:43:13 作者: rapoo

急死了,求char(30)字段查询匹配的问题,有空格
表test,有个字段a,char(30),一条记录是'你好后面有空格 '(他会后补空格到30位)
直接用sql查询select * from test where a='你好后面有空格',可以返回记录
但是放到存储过程中就没有记录

open v_cur for
select * from test where a=v_a;

其中v_cur是输出cursor,v_a是输入,值为你好后面有空格,后面不带空格
真急人啊,怎么没有记录啊

另外不能用trim(a)这样子,表A是上千万上亿的数据量,用trim做查询要全表扫描,肯定死翘翘
[最优解释]
可以在伪列 trim(a) 上建一个索引,满足你用trim
[其他解释]
这种问题最麻烦了,把char改成varchar2吧
alter table test modify (a varchar2(30));
[其他解释]

引用:
表test,有个字段a,char(30),一条记录是'你好后面有空格 '(他会后补空格到30位)
直接用sql查询select * from test where a='你好后面有空格',可以返回记录
但是放到存储过程中就没有记录

open v_cur for
select * from test where a=v_a;

其中v_cur是输出cursor……


oracle1的文档上都是建议把char改成varchar2的
lz也改一下吧
[其他解释]
不改表结构那只能用like了
[其他解释]
建议修改字段的数据类型 char-->varchar2

在确定数据的长度的话用char,效率高;
不确定数据的长度用varchar2,节省空间。
现在都是说以空间换时间,char和varchar2用哪个好?高人指点一下
[其他解释]
成千万上亿的表,表名叫test,用char存储字符,对吧。

那急个毛啊。
[其他解释]
改类型

读书人网 >oracle

热点推荐