如何在Oracle中的查询结果中显示字段的隐藏字符?

时间:2011-02-23 15:09:08

标签: oracle plsql

我有两行根据Java .equals()具有不同的varchar列。我无法轻松更改或调试针对此特定数据库运行的Java代码,但我有权使用SQLDeveloper直接对数据库执行查询。这些字段看起来与我相同(它们是街道地址,其中两行由一些新行或托架提要/新行组合分隔)。

有没有办法在查询结果中查看所有隐藏字符?我想避免在每一行上使用ascii()函数和substr()来计算哪个隐藏的角色不同。

我也接受一些查询,告诉我哪个字符是两个字段之间的第一个区别。

2 个答案:

答案 0 :(得分:5)

尝试

select dump(column_name) from table

更多信息位于documentation

至于找到角色不同的位置,这可能会给你一个想法:

create table tq84_compare (
  id  number,
  col varchar2(20)
);

insert into tq84_compare values (1, 'hello world');
insert into tq84_compare values (2, 'hello' || chr(9) || 'world');

with c as (
 select
  (select col from tq84_compare where id = 1) col1,
  (select col from tq84_compare where id = 2) col2
 from
  dual
),
l as (
  select
  level l from dual
  start with 1=1
  connect by level < (select length(c.col1) from c)
)
select 
  max(l.l) + 1position
from c,l
  where substr(c.col1,1,l.l) = substr(c.col2,1,l.l);

答案 1 :(得分:1)

SELECT DUMP('€ÁÑ', 1016)
FROM DUAL

...会打印出类似的内容:

Typ=96 Len=3 CharacterSet=WE8MSWIN1252: 80,c1,d1