数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中CHAR类型自动补足空格的问题


发布日期:2018年01月28日
 
Oracle中CHAR类型自动补足空格的问题

在ORACLE中CHAR类型的字段值会自动补足空格所以当其作为条件时就有可能查不出想要的数据

如果不允许改DB设计的话那就用RTRIM来解决吧

DB

CREATETABLETEST

(

TEST_IDVARCHAR()NOTNULL

TEST_CHARCHAR()

CONSTRAINTTEST_IDPRIMARYKEY(TEST_ID)

);

INSERTINTOTESTVALUES(a);

测试代码

Sessionsession=factorygetCurrentSession();

sessionbeginTransaction();

Listlist=sessioncreateQuery(FROMTestWHERERTRIM(TEST_CHAR)=a)list();

sessionclose();

assertTrue(listsize()>);

输出结果(ORACLE)

Hibernate:

select

test_TEST_IDasTEST__

test_TEST_CHARasTEST__

from

TESTtest_

where

rtrim(TEST_CHAR)=a

::DEBUGStringType:returningascolumn:TEST__

::DEBUGStringType:returningaascolumn:TEST__

而MySQL不会自动补足空格同样的代码也是可以适用的输出结果(MySQL)

Hibernate:

select

test_TEST_IDasTEST__

test_TEST_CHARasTEST__

from

TESTtest_

where

rtrim(TEST_CHAR)=a

::DEBUGStringType:returningascolumn:TEST__

::DEBUGStringType:returningaascolumn:TEST__

上一篇:Oracle触发器详细介绍

下一篇:ORACLE和SQL语法区别归纳(2)