我们已经看到在oracle中存储了4byte UTF-8字符。我们需要检测特定列中有多少行具有此类字符。
尝试了这里给出的建议 - UTF-16 supplementary characters但这对我不起作用。它会抛出错误 - ORA-12728:正则表达式中的无效范围。也试过其他的答案。他们都没有工作。
Oracle在本页{B-2}中记录了表B-2中可能的UTF-8十六进制代码范围Unicode Character Set。我试图检测该表中第5行或第6行中的任何字符(“补充字符:附加中文,日文和韩文字符;历史字符;音乐符号;数学符号”或“私人使用区#2”)< / p>
是否有可用于检测此类行的正则表达式?
select count(*) from mytable where regexp_like(mycolumn, expression);
答案 0 :(得分:0)
也许更容易找到代理人。高代理来自U+D800
- U+DBFF
,低代理来自U+DC00
- U+DFFF
。
这个也应该有效,是寻找低代理人:
WHERE REGEXP_LIKE(ASCIISTR(mycolumn), '\\D[C-F]')