Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment supprimer les guillemets cachés dans les valeurs de colonne de SQL Developer

La valeur de colonne dans la table de base de données n'a pas de guillemets doubles.

Lorsque vous copiez les données de la grille de résultats, SQL Developer les ajoute dans le cadre de l'opération de copie, pour vous aider. (Il y a probablement moyen de lui demander de ne pas le faire, mais je ne peux pas en voir un immédiatement.) Il le fait parce que la première valeur que vous obtenez a un caractère de fin de ligne. Si je le fais, je peux dupliquer ce que vous voyez :

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

Si j'exécute en tant que script, la fenêtre de sortie du script affiche :

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

Ici, la nouvelle ligne est perdue, et le copier-coller ne la conserve pas. Si j'exécute en tant qu'instruction, les données de la fenêtre de résultat de la requête sont identiques :

mais si je copie ces données de la grille et que je les colle (n'importe où, pas seulement dans le Bloc-notes++), je vois également :

"Testdata
"
Testdata

... donc la nouvelle ligne est conservée et est entourée de guillemets doubles, donc tout ce dans quoi elle est collée (je suppose que cela est destiné à Excel) comprend qu'il s'agit d'une valeur unique, y compris ce caractère de nouvelle ligne.

Le problème est qu'ils ne sont pas, en fait, distincts; l'un a une nouvelle ligne, l'autre non.

Si vous souhaitez ignorer cela et les traiter de la même manière, vous pouvez supprimer le retour à la ligne :

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

Démo avec les mêmes exemples de données :

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