熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中CHAR類型自動補足空格的問題

2013-11-13 16:04:18  來源: Oracle 

  在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 = factorygetCurrentSession();
sessionbeginTransaction();
List list = sessioncreateQuery(FROM Test WHERE RTRIM(TEST_CHAR) = a)list();
sessionclose();
assertTrue(listsize() > );

  輸出結果(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)

   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__


From:http://tw.wingwit.com/Article/program/Oracle/201311/17762.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.