【问题标题】:How to remove hidden double quotes in column values of SQL Developer如何删除 SQL Developer 列值中隐藏的双引号
【发布时间】:2021-06-18 20:52:41
【问题描述】:

我的表中的某些列值用双引号括起来,我需要删除这些双引号。问题是,我无法在 SQL Developer(版本 4.2.0.16.260)中查看双引号符号。但是当我将数据复制到 Notepad++ 时,我得到了双引号。我尝试instr 获取双引号的位置,它返回结果0。我还尝试用空白替换双引号,但它们没有被删除。

以下是我在复制到 Notepad++ 时看到的数据。显示 2 条记录。我试图从这两个值中获取不同的值。但我做不到。

"Testdata
"

Testdata

【问题讨论】:

  • 我正在使用 Oracle Database 11g 版本 11.2.0.4.0 - 64 位生产
  • 向我们展示您的真实数据....换句话说,我们需要一个 CREATE TABLE 和至少一个有效的 INSERT,以便我们确切地知道您正在使用什么。否则,您是在要求我们猜测

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

数据库表中的列值没有双引号。

当您从结果网格复制数据时,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

【讨论】:

    【解决方案2】:

    请尝试一下

    SELECT REPLACE(TRIM(column_name), CHR(13)||CHR(10))
      FROM table_name;
    

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2021-08-27
      相关资源
      最近更新 更多