Oracle中CHAR类型自动补足空格的问题-性能调优
2008-11-14 12:59:28 来源:WEB开发网在ORACLE中,CHAR类型的字段值会自动补足空格。所以当其作为条件时,就有可能查不出想要的数据。 网管论坛bbs_bitsCN_com
如果不允许改DB设计的话,那就用RTRIM来解决吧。例:
网管下载dl.bitscn.com
DB:
网管u家u.bitsCN.com
CREATETABLETEST
(
TEST_ID VARCHAR2(64)NOTNULL,
网管网www.bitscn.com
TEST_CHAR CHAR(10),
CONSTRAINTTEST_IDPRIMARYKEY(TEST_ID)
);
INSERTINTOTESTVALUES('1','a');
网管论坛bbs_bitsCN_com
测试代码:
网管下载dl.bitscn.com
Sessionsession=factory.getCurrentSession();
session.beginTransaction();
Listlist=session.createQuery("FROMTestWHERERTRIM(TEST_CHAR)='a'").list();
session.close(); 网管联盟bitsCN@com
assertTrue(list.size()>0);
网管u家www.bitscn.net
输出结果(ORACLE): 网管网www_bitscn_com
Hibernate:
select
test0_.TEST_IDasTEST1_0_,
test0_.TEST_CHARasTEST4_0_
from
网管朋友网www_bitscn_net
TESTtest0_
where
rtrim(TEST_CHAR)='a'
14:09:53,171DEBUGStringType:172-returning'1'ascolumn:TEST1_0_ 网管u家www.bitscn.net
14:09:53,187DEBUGStringType:172-returning'a 'ascolumn:TEST4_0_
中国网管联盟bitsCN.com
而MySQL不会自动补足空格,同样的代码也是可以适用的:输出结果(MySQL):
网管网www.bitscn.com
Hibernate:
select
test0_.TEST_IDasTEST1_0_,
test0_.TEST_CHARasTEST4_0_
from
网管网www.bitscn.com
TESTtest0_
where
rtrim(TEST_CHAR)='a'
14:09:01,828DEBUGStringType:172-returning'1'ascolumn:TEST1_0_ 网管u家u.bitsCN.com
14:09:01,828DEBUGStringType:172-returning'a'ascolumn:TEST4_0_
网管有家bitscn.net
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
- ››oracle 中 UPDATE nowait 的使用方法
更多精彩
赞助商链接