Как отобразить скрытые символы поля в результате запроса в Oracle? - PullRequest
2 голосов
/ 23 февраля 2011

У меня есть две строки, в которых есть столбец varchar, который отличается в соответствии с Java .equals().Я не могу легко изменить или отладить код Java, который работает с этой конкретной базой данных, но у меня есть доступ для выполнения запросов непосредственно к базе данных с использованием SQLDeveloper.Поля выглядят одинаково для меня (это уличные адреса с двумя строками, разделенными какой-то новой строкой или комбо-фидом / новой строкой).

Есть ли способ увидеть все скрытые символы в результатезапрос? Я хотел бы избежать использования функции ascii() с substr() в каждой строке, чтобы выяснить, какой скрытый символ отличается.

Я также принял бы некоторый запрос, который показываетмне, какой символ является первым различием между двумя полями.

Ответы [ 2 ]

5 голосов
/ 23 февраля 2011

Попробуйте

select dump(column_name) from table

Больше информации в документации .

Что касается определения положения, в котором персонаж отличается, это может дать вам представление:

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 голос
/ 23 февраля 2011
SELECT DUMP('€ÁÑ', 1016)
FROM DUAL

... напечатает что-то вроде:

Typ=96 Len=3 CharacterSet=WE8MSWIN1252: 80,c1,d1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...