Oracle中CHAR类型自动补足空格的问题以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在ORACLE中 CHAR类型的字段值会自动补足空格 所以当其作为条件时 就有可能查不出想要的数据
如果不允许改DB设计的话 那就用RTRIM来解决吧 例
DB
CREATE TABLE TEST( TEST_ID VARCHAR ( ) NOT NULL TEST_CHAR CHAR( ) CONSTRAINT TEST_ID PRIMARY KEY (TEST_ID));INSERT INTO TEST VALUES( a );
测试代码
Session session = factory getCurrentSession();session beginTransaction();List list = session createQuery( FROM Test WHERE RTRIM(TEST_CHAR) = a ) list();session close();assertTrue(list size() > );
输出结果(ORACLE)
Hibernate: select test _ TEST_ID as TEST _ _ test _ TEST_CHAR as TEST _ _ from TEST test _ where rtrim(TEST_CHAR)= a : : DEBUG StringType: returning as column: TEST _ _ : : DEBUG StringType: returning a as column: TEST _ _
而MySQL不会自动补足空格 同样的代码也是可以适用的 输出结果(MySQL) lishixinzhi/Article/program/Oracle/201311/17762
分页:123