2014-10-08 38 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

相关问题