如何在Oracle中检测4byte UTF8字符

时间:2018-05-24 01:35:45

标签: oracle utf-8

我们已经看到在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);

1 个答案:

答案 0 :(得分:0)

也许更容易找到代理人。高代理来自U+D800 - U+DBFF,低代理来自U+DC00 - U+DFFF

这个也应该有效,是寻找低代理人:

WHERE REGEXP_LIKE(ASCIISTR(mycolumn), '\\D[C-F]')