数据库表中的列值没有双引号。
当您从结果网格复制数据时,SQL Developer 会将它们添加为复制操作的一部分,以帮助您解决问题。 (可能有办法要求它不要这样做,但我不能立即看到。)它这样做是因为你得到的第一个值有一个尾随的换行符。如果我这样做,我可以复制你所看到的:
select 'Testdata' || chr(10) from dual
union all
select 'Testdata' from dual;
如果我作为脚本运行,脚本输出窗口会显示:
'TESTDATA
---------
Testdata
Testdata
这里的换行符丢失了,从中复制和粘贴不会保留它。如果我作为语句运行,查询结果窗口中的数据看起来是一样的:
但如果我从网格中复制该数据并将其粘贴(任何地方,而不仅仅是在 Notepad++ 中),我也会看到:
"Testdata
"
Testdata
...所以换行符被保留,并用双引号括起来,所以无论它被粘贴到什么(我猜这是针对Excel)都理解它是一个单一的值,包括那个换行符。
我试图从这两个值中获取不同的值
问题在于它们实际上并没有区别。一个有换行符,另一个没有。
如果您想忽略它并将它们视为相同,您可以剪掉尾随的换行符:
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