Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So entfernen Sie versteckte doppelte Anführungszeichen in Spaltenwerten von SQL Developer

Der Spaltenwert in der Datenbanktabelle enthält keine doppelten Anführungszeichen.

Wenn Sie die Daten aus dem Ergebnisraster kopieren, fügt SQL Developer sie als Teil des Kopiervorgangs hinzu, um Ihnen zu helfen. (Es gibt wahrscheinlich eine Möglichkeit, es zu unterlassen, aber ich kann es nicht sofort sehen.) Dies geschieht, weil der erste Wert, den Sie erhalten, ein abschließendes Zeilenumbruchzeichen hat. Ich kann duplizieren, was Sie sehen, wenn ich das tue:

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

Wenn ich es als Skript ausführe, zeigt das Ausgabefenster des Skripts:

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

Hier geht der Zeilenumbruch verloren, und das Kopieren und Einfügen davon bewahrt ihn nicht. Wenn ich als Anweisung laufe, sehen die Daten im Abfrageergebnisfenster gleich aus:

aber wenn ich diese Daten aus dem Raster kopiere und einfüge (überall, nicht nur in Notepad++), sehe ich auch:

"Testdata
"
Testdata

... also bleibt der Zeilenumbruch erhalten und wird in doppelte Anführungszeichen eingeschlossen, sodass alles, in das er eingefügt wird (ich vermute, dass dies auf Excel abzielt), versteht, dass es sich um einen einzelnen Wert handelt, einschließlich dieses Zeilenumbruchzeichens.

Das Problem ist, dass sie tatsächlich nicht verschieden sind; einer hat einen Zeilenumbruch, der andere nicht.

Wenn Sie das ignorieren und sie gleich behandeln möchten, können Sie den abschließenden Zeilenumbruch abschneiden:

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

Demo mit denselben Beispieldaten:

-- 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