Как убрать скрытые двойные кавычки в значениях столбцов SQL Developer - PullRequest
0 голосов
/ 02 мая 2019

Некоторые значения столбцов в моей таблице заключены в двойные кавычки, и мне нужно удалить эти двойные кавычки.Проблема в том, что я не могу просмотреть символ двойных кавычек в SQL Developer (версия 4.2.0.16.260).Но когда я копирую данные в Notepad ++, я получаю двойные кавычки.Я пытался instr получить позицию двойных кавычек, возвращая результат 0. Также я пытался заменить двойные кавычки пустыми, но они не удаляются.

Ниже приведены данные, которые я вижу при копированиив блокнот ++.2 записи отображаются.Я пытаюсь взять отличное значение от этих 2 значений.Но я не в состоянии.

"Testdata
"

Testdata

1 Ответ

0 голосов
/ 02 мая 2019

Значение столбца в таблице базы данных не имеет двойных кавычек.

Когда вы копируете данные из таблицы результатов, SQL Developer добавляет их как часть операции копирования, чтобы помочь вам.(Вероятно, есть способ попросить этого не делать, но я не могу сразу его увидеть.) Это происходит потому, что первое значение, которое вы получаете, имеет символ новой строки в конце.Я могу скопировать то, что вы видите, если я сделаю:

select 'Testdata' || chr(10) from dual
union all
select 'Testdata' from dual;

Если я запускаю как скрипт, окно вывода скрипта показывает:

'TESTDATA
---------
Testdata
Testdata

Здесь новая строка потеряна, икопирование и вставка из этого не сохраняют его.Если я запускаю как оператор, данные в окне результатов запроса выглядят одинаково:

Query result window

, но если я скопирую эти данные из таблицы и вставлю их(где угодно, не только в Notepad ++) Я также вижу:

"Testdata
"
Testdata

... поэтому символ новой строки сохраняется и заключается в двойные кавычки, чтобы он не вставлялся в него (я предполагаю, что этонацеленный на Excel) понимает, что это одно значение, включая символ новой строки.

Я пытаюсь получить отличное значение от этих 2 значений

Проблема в том, чтона самом деле они не различимы;у одной есть новая строка, у другой нет.

Если вы хотите игнорировать это и рассматривать их как одно и то же, вы можете обрезать завершающую новую строку:

select distinct rtrim(col, chr(10))
from your_table;

Демо с тем же примеромданные:

-- CTE for sample data
with your_table (col) as (
  select 'Testdata' || chr(10) from dual
  union all
  select 'Testdata' from dual
)
select col
from your_table;

COL      
---------
Testdata
Testdata

-- CTE for sample data
with your_table (col) as (
  select 'Testdata' || chr(10) from dual
  union all
  select 'Testdata' from dual
)
select distinct rtrim(col, chr(10)) as col
from your_table;

COL      
---------
Testdata
...