sql >> Databáze >  >> RDS >> Oracle

Jak odstranit skryté dvojité uvozovky v hodnotách sloupců SQL Developer

Hodnota sloupce v databázové tabulce nemá dvojité uvozovky.

Když zkopírujete data z mřížky výsledků, SQL Developer je přidá jako součást operace kopírování, aby vám pomohl. (Pravděpodobně existuje způsob, jak požádat, aby to nedělalo, ale žádný okamžitě nevidím.) Dělá to proto, že první hodnota, kterou získáváte, má na konci znak nového řádku. Mohu duplikovat to, co vidíte, pokud to udělám:

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

Pokud spustím jako skript, okno výstupu skriptu zobrazí:

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

Zde je nový řádek ztracen a kopírování a vkládání z něj jej nezachová. Pokud spustím jako příkaz, data v okně výsledků dotazu vypadají stejně:

ale když zkopíruji tato data z mřížky a vložím je (kamkoli, nejen v Notepad++), také vidím:

"Testdata
"
Testdata

... takže nový řádek je zachován a je uzavřen ve dvojitých uvozovkách, takže ať už je vložen do čehokoli (hádám, že je to zaměřeno na Excel), rozumí se, že se jedná o jednu hodnotu, včetně znaku nového řádku.

Problém je v tom, že ve skutečnosti nejsou odlišné; jeden má nový řádek, druhý ne.

Pokud to chcete ignorovat a považovat je za stejné, můžete oříznout poslední řádek:

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

Demo se stejnými ukázkovými daty:

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


  1. Automatické generování souboru odpovědí

  2. Tipy pro upgrade z MySQL 5.7 na MySQL 8

  3. Vytvořte uloženou proceduru v SQL Server 2017

  4. Vývoj odolnosti vůči chybám v PostgreSQL:Synchronní závazek