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

Oracle中CHAR类型自动补足空格的问题,第1张

在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 表名


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11490196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存