2014-10-08 84 views
1

我有一個VARCHAR2(255)列,我想儲存像一個字符串:商店「大於或等於」在Oracle的VARCHAR2列符號

1 ≤ 2 

然而,當我運行下面的SQL ≤符號變成了「=」。

update my_table set my_column = '1 ≤ 2'; 

這導致我的表以下值:

1 = 2 

如何將存儲在數據庫中≤或≥?

+0

你使用什麼字符集? http://docs.oracle.com/cd/B10501_01/server.920/a96529/ch2.htm#101203 – Donal 2014-10-08 19:00:43

+0

我正在使用AL32UTF8 – spots 2014-10-08 19:03:32

+0

不要說,顯示它。請執行以下操作,'select * from table where column ='1≤2''並將結果複製粘貼到此處。編輯您的帖子並添加結果。 – 2014-10-08 19:12:27

回答

1

使用unistr來存儲UTF8數據。它不像普通字符串那麼方便,但它避免了客戶端沒有正確解釋UTF8導致的錯誤。

--≥ 
select unistr('1 \2265 2') from dual; 

--≤ 
select unistr('1 \2264 2') from dual; 
+0

不錯的解決方案。但是,OP的要求首先是渲染問題,而不是數據庫之一。爲什麼使用特殊字符,因爲它們在字符集中不是常量。 – 2014-10-08 19:36:29

+0

@LalitKumarB很難確切知道字符串亂碼的位置。它可以在更新或選擇上。某些客戶端(如PL/SQL Developer)將始終正確顯示和檢索UTF8,但不會將其正確發送到服務器。 [這些代碼](http://www.fileformat.info/info/unicode/char/2264/index.htm)應該適用於UTF8或UTF16。如果他們使用ASCII7,嗯,他們應該有問題。 :) – 2014-10-08 19:49:58