在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那可以不用concat,可以采用||的方式。
比如有A列和B列,要在A列和B列连接的同时在中间加一个空格,可用如下语句:
select A||' '||B from 表名concat在oracle中只可以连接两个字符,如果非要用concat的话,可以采用这种方式:
select concat(concat(A,' '),B) from 表名
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)