这是一个谜题。我想编写一个过程来检查表中是否有任何破坏 XML 代码的字符。这些可以在 W3C Recommendation 中找到,但现在这并不重要。重要的是:
1) 字符“ç”的 ASCII 代码为 135。这是事实。然而,当我运行时
begin ascii('ç'); end;
我得到 50087
。
2)当我运行时
begin dbms_output.put_line(chr(135)); end;
我什么都没有
。
显然,ascii() 和 chr() 只处理 0..127 范围内的值。所以我的问题是如何找到 unicode 等价物或编写我自己的扩展,以使用像 'ç' 和 135 这样的值。
非常感谢您的帮助。
附言我正在使用 Oracle SQL Developer。
最佳答案
如果您只是想摆脱奇怪的字符,可以使用 REGEXP_REPLACE 函数。例如,
REGEXP_REPLACE(your_value, '[:cntrl:]', '')
会删除所有控制(非打印)字符。
REGEXP_REPLACE 可从 Oracle 10g Rel. 2 起。文档位于 http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions130.htm
关于xml - 尝试检测 PL/SQL 过程中的非法 XML 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504911/