如何在Oracle SQL Developer中查找非英文字符及NCLOB字段多字节字符
在Oracle SQL Developer中查找非英文字符及NCLOB字段的多字节字符查询
在Oracle SQL Developer界面中查找非英文字符
- 打开目标表的数据视图(双击表名进入Data标签页)
- 点击顶部的「Filter」按钮,或者右键目标列名选择「Filter」选项
- 在过滤条件输入框中,针对目标字段编写正则过滤语句,示例:
该表达式会匹配所有不属于英文大小写、数字及英文标点的字符REGEXP_LIKE(your_column_name, '[^A-Za-z0-9[:punct:]]') - 点击「Apply」后,结果集将展示包含非英文字符的行
编写查询语句查找非英/多字节字符
普通字符类型(VARCHAR2/CHAR)
直接使用REGEXP_LIKE匹配非ASCII范围的字符:
SELECT * FROM your_table WHERE REGEXP_LIKE(your_column, '[^[:ascii:]]');
如果需要更精准排除英文相关字符(仅匹配非英文字符),可以用:
SELECT * FROM your_table WHERE REGEXP_LIKE(your_column, '[^A-Za-z0-9 !@#$%^&*()_+\-=\[\]{};:\'",.<>?/\\|`~]');
NCLOB类型字段
NCLOB存储的是Unicode大对象,可直接用正则匹配多字节字符。若表数据量较大,建议先加ROWNUM限制样本范围:
SELECT * FROM your_table WHERE REGEXP_LIKE(your_nclob_column, '[^[:ascii:]]') AND ROWNUM <= 100;
如果需要精准匹配特定语言的字符(如中文、日文),可以指定Unicode范围:
SELECT * FROM your_table WHERE REGEXP_LIKE(your_nclob_column, '[\u4E00-\u9FFF\u3040-\u309F\u30A0-\u30FF]');
\u4E00-\u9FFF:覆盖中文汉字范围\u3040-\u309F:覆盖日文平假名范围\u30A0-\u30FF:覆盖日文片假名范围
内容的提问来源于stack exchange,提问作者Murali Dharan
相关产品推荐
相关产品推荐

