如何排除varchar2值不为null但导出为null的行

时间:2018-11-07 02:55:54

标签: null export oracle12c varchar2

我在varchar2(800)列中有一些无法更改的数据,该列在SQL Developer中显示为null,并从那里导出为null,但没有{ {1}}。

这是我尝试过的:

  • null返回length(mycol)
  • 3返回asciistr(mycol)
  • null返回substr(mycol, 1, 1)(其他位置返回普通字母)
  • null返回ascii(substr(mycol, 1, 1)),即acute accent

我要选择将导出为180值的行。

我该怎么做?

我尝试过null,但是它也过滤掉带有重音字符的文本,这些字符不能导出为asciistr(mycol) is not null。我想导出带重音符号的字符,但不导出整列将导出为null的字符。

nullmycol is not null无效。

很显然,我需要一种可以在字段中任何位置的任何长度的输入和字符异常情况下都可以使用的解决方案。

1 个答案:

答案 0 :(得分:0)

急性重音的ASCII码为239。看看是否有帮助。

将一些值插入表中;其中之一是急性口音

SQL> create table test (mycol varchar2(10));

Table created.

SQL> insert into test values ('a');

1 row created.

SQL> insert into test values (chr(239));

1 row created.

SQL> select * from test;

MYCOL
----------
a
´

其中存储了什么?注意 DUMP 功能:

SQL> select mycol, dump(mycol) dmp, ascii(mycol) ascii
  2  from test;

MYCOL      DMP                    ASCII
---------- -------------------- -------
a          Typ=1 Len=1: 97           97
´          Typ=1 Len=1: 239         239

SQL> select * from test
  2  where ascii(mycol) <> 239;

MYCOL
----------
a

SQL>

检查DUMP返回的情况如何;也许在该列中还有一些垃圾,但是-如果您知道它的真正含义-您甚至可以UPDATE将该列放入“ {real}” NULL (或其他)。