ID NAME DATE 1 TEST 2018-12-02 11:09:05 2 TE-ST 2018-12-02 11:09:05 3 测试 2018-12-02 11:09:05
我希望查询仅找到第3行。
答案 0 :(得分:3)
with test as
(
select 'hello good morning' txt from dual
union select 'Bad weather' from dual
union select '测试 ' from dual
union select 'L''Inhêrit ' from dual
union select 'هلا' from dual
)
select *
from test
where txt != asciistr( txt )
答案 1 :(得分:1)
查找非英文字符非常简单。 @moudiz的solution will solve that problem。但是,要确定文本正文是用英语还是其他某种语言编写,则需要某种形式的AI / ML功能,这在Oracle RDBMS中不是标准的。
一种可能是Oracle Text。 World Lexer具有对多种语言的自动检测支持。也许有可能会纠缠其判断某段文字是否为英语的能力。 Find out more。 (注意:蓝天在这里思考,从未尝试过类似的方法。)
另一种解决方案是构建一个调用Google Translate API的PL / SQL程序包。 detect()
可以识别所传递文本的语言。 Find out more。
有两个明显的障碍:
答案 2 :(得分:0)
由于@moudiz,我能够找到一个完美的解决方案。 我正在使用:
select * from table
where not REGEXP_LIKE (field_name, '^[^0-9a-z]+$', 'i');