在Oracle中处理不同编码的记录

时间:2014-08-27 12:15:45

标签: java sql oracle character-encoding

我必须在TABLE_A和TABLE_B中检查/加入TABLE_A.name,如TABle_B.name。 我有类似的算法,但主要问题我不能处理不同的编码。 因为桌子完成了。它是从不同的excels导入的,csv-s,java上传简单的oracle插入等。
其中一些是&ä&đ&>yc&äđ编码所以我无法处理ßruce =? Bruce Ryán =? Ryan等,但更糟。

我在其他主题中找到了一些ASCII函数和其他函数,但我无法管理它。

所以,如果你在oracle sql开发人员或者java中有一些神奇的技巧 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您可以在导入TABLE_A和TABLE_B期间找出已使用的字符集,则可以使用CONVERT函数转换值:

UPDATE table_a SET name = CONVERT(name, 'WE8ISO8859P1', 'AL32UTF8');
UPDATE table_b SET name = CONVERT(name, 'WE8MSWIN', 'AL32UTF8');

转换后,你应该可以毫无问题地加入(或检查?)两个表。

如果您无法更改数据,则可以动态进行转换,例如:

SELECT *
  FROM table_a JOIN table_b 
    ON CONVERT(table_a.name, 'WE8ISO8859P1', 'AL32UTF8') =
       CONVERT(table_b.name, 'WE8ISO8859P1', 'AL32UTF8');

请参阅文档以供参考:http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions027.htm