我在表格中有一个字符串,其中有一些奇怪的东西。当我在toad中打开它时,你会看到一个灰色标记:
当我尝试将其转换为这样的XML时,会触发错误:
select xmlelement ("x",value)
from bad_strings;
ORA-31061: XDB-fout: special char to escaped char conversion failed.
如果我将其导出到文本文件(使用utl_file),则会删除奇怪的字符。如果我在sqldevelopet中打开它,它也不可见。
现在我很好奇它是什么(以及它是如何实现的,但那是另一个故事)。我虽然可以使用ascii()来查看它的ascii值是什么,但这似乎不起作用。
如果我要求字符串的长度,我得到48,这是可见字符的长度。 使用像这样的脚本查看ascii代码并不能解决任何异常问题:
set serveroutput on;
DECLARE
l_string VARCHAR2 (600);
l_stringlen number;
BEGIN
SELECT VALUE
INTO l_string
FROM bad_strings
WHERE pk = 195789220;
l_stringlen := length(l_string);
for x in 1..l_stringlen
loop
dbms_output.put_line(x || ': ' || substr(l_string,x,1) || ' --> ' || ascii(substr(l_string,x,1))) ;
end loop;
END;
1: v --> 118
2: e --> 101
3: r --> 114
4: h --> 104
5: u --> 117
6: i --> 105
7: s --> 115
8: t --> 116
9: --> 32
10: b --> 98
11: i --> 105
12: n --> 110
13: n --> 110
14: e --> 101
15: n --> 110
16: k --> 107
17: o --> 111
18: r --> 114
19: t --> 116
20: --> 32
21: n --> 110
22: a --> 97
23: a --> 97
24: r --> 114
25: --> 32
26: b --> 98
27: u --> 117
28: i --> 105
29: t --> 116
30: e --> 101
31: n --> 110
32: l --> 108
33: a --> 97
34: n --> 110
35: d --> 100
36: --> 32
37: --> 29
38: 2 --> 50
39: 1 --> 49
40: - --> 45
41: 1 --> 49
42: 0 --> 48
43: - --> 45
44: 2 --> 50
45: 0 --> 48
46: 1 --> 49
47: 3 --> 51
48: ) --> 41
也没有倾销它:
select value, dump(value,1017) from bad_strings
where pk = 195789220;
Typ=1 Len=48 CharacterSet=WE8MSWIN1252: v,e,r,h,u,i,s,t, ,b,i,n,n,e,n,k,o,r,t, ,n,a,a,r, ,b,u,i,t,e,n,l,a,n,d, ,^],2,1,-,1,0,-,2,0,1,3,)
所以我有点不解。什么是这个奇怪的角色阻止我将其转换为XML? 任何想法?
我使用的是Oracle 11g企业版11.2.0.4.0版 - 64位
答案 0 :(得分:0)
如何复制文本并将其粘贴到Notepad ++中?您可以将其设置为“显示所有字符”,这样您就可以看到所有内容。我有一个类似的问题,一个值,它是一些HTML字符。我真的不记得是哪一个。