1

我正在尝试编写一个查询来查找除此之外没有空格的字符串。这意味着'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
4

1 回答 1

0

您可以使用

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

或者,如果您想从匹配中“排除”非空白字符(这不是rlike场景的首选,而是替换操作)

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

请参阅正则表达式演示

细节

  • \S- 除空格以外的任何字符
  • (?<=\S)- 在当前位置之前需要任何字符但空格的积极后视
  • (?=\S)- 在当前位置之后立即需要任何字符但空格的正向前瞻。
于 2019-05-10T20:52:33.000 回答