Wartość kolumny w tabeli bazy danych nie zawiera podwójnych cudzysłowów.
Podczas kopiowania danych z siatki wyników program SQL Developer dodaje je jako część operacji kopiowania, aby Ci pomóc. (Prawdopodobnie jest sposób, aby poprosić, aby tego nie robić, ale nie widzę od razu jednego.) Robi to, ponieważ pierwsza wartość, którą otrzymujesz, ma znak nowej linii. Mogę powielić to, co widzisz, jeśli to zrobię:
select 'Testdata' || chr(10) from dual
union all
select 'Testdata' from dual;
Jeśli uruchamiam jako skrypt, okno wyjściowe skryptu pokazuje:
'TESTDATA
---------
Testdata
Testdata
Tutaj nowa linia zostaje utracona, a kopiowanie i wklejanie z niej nie zachowuje jej. Jeśli uruchamiam jako instrukcję, dane w oknie wyników zapytania wyglądają tak samo:
ale jeśli skopiuję te dane z siatki i wkleję je (w dowolnym miejscu, nie tylko w Notepad ++), widzę również:
"Testdata
"
Testdata
... więc nowy wiersz jest zachowywany i jest ujęty w podwójne cudzysłowy, więc wszystko, do czego jest wklejony (zgaduję, że jest to skierowane do programu Excel), rozumie, że jest to pojedyncza wartość, w tym znak nowego wiersza.
Problem polega na tym, że w rzeczywistości nie są one odrębne; jeden ma znak nowej linii, drugi nie.
Jeśli chcesz to zignorować i traktować je tak samo, możesz skrócić końcowy znak nowej linii:
select distinct rtrim(col, chr(10))
from your_table;
Demo z tymi samymi przykładowymi danymi:
-- 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