我有两行根据Java .equals()
具有不同的varchar列。我无法轻松更改或调试针对此特定数据库运行的Java代码,但我有权使用SQLDeveloper直接对数据库执行查询。这些字段看起来与我相同(它们是街道地址,其中两行由一些新行或托架提要/新行组合分隔)。
有没有办法在查询结果中查看所有隐藏字符?我想避免在每一行上使用ascii()
函数和substr()
来计算哪个隐藏的角色不同。
我也接受一些查询,告诉我哪个字符是两个字段之间的第一个区别。
答案 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