如何使用like / rlike过滤掉字符串两侧的空格

时间:2019-05-10 18:52:36

标签: sql regex hive hiveql rlike

我正在尝试编写查询以查找除空格外没有其他字符串的字符串。这意味着“ 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

1 个答案:

答案 0 :(得分:0)

您可以使用

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

或者,如果您要从匹配中“排除”非空格字符(在rlike场景中不推荐使用,而是在替换操作中使用)

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

请参见regex demo

详细信息

  • \S-除空格以外的任何字符
  • (?<=\S)-向后的正向查找,除了当前位置之前的空白外,还需要其他字符
  • (?=\S)-一个正向超前,它需要在当前位置之后立即添加除空白以外的任何字符。