如何使用like/rlike来过滤两边都有空格的字符串

hmae6n7t  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(349)

我正在尝试编写一个查询来查找没有空格的字符串。这意味着'xx applexx'、'xxapple xx'和'xx apple xx'是不可接受的,但是'xxapplexx'应该被查询出来。
我试过了

select a
from b
where b.c not rlike '(an apple | an apple)'

但这个表达似乎是错误的。
更多示例:假设数据库中有4条记录:

Name    Data
    a    I have an appleYo
    b    I havean apple Yo
    c    I have an apple Yo
    d    I havean appleYo

预期结果应为:

Name    Data
    d    I havean appleYo
xdnvmnnf

xdnvmnnf1#

你可以用

where b.c rlike '\\Sapple\\S'

或者,如果您想从匹配中“排除”非witespace字符(这对于 rlike 场景,而不是替换操作)

where b.c rlike '(?<=\\S)apple(?=\\S)'

查看regex演示。
细节 \S -除空格以外的任何字符 (?<=\S) -在当前位置之前需要除空格以外的任何字符的正向查找 (?=\S) -在当前位置之后立即需要除空格以外的任何字符的正向前瞻。

相关问题