我在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
的字符。
null
和mycol is not null
无效。
很显然,我需要一种可以在字段中任何位置的任何长度的输入和字符异常情况下都可以使用的解决方案。
答案 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
(或其他)。