我正在尝试编写查询以查找除空格外没有其他字符串的字符串。这意味着“ 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
答案 0 :(得分:0)
您可以使用
where b.c rlike '\\Sapple\\S'
或者,如果您要从匹配中“排除”非空格字符(在rlike
场景中不推荐使用,而是在替换操作中使用)
where b.c rlike '(?<=\\S)apple(?=\\S)'
请参见regex demo。
详细信息
\S
-除空格以外的任何字符(?<=\S)
-向后的正向查找,除了当前位置之前的空白外,还需要其他字符(?=\S)
-一个正向超前,它需要在当前位置之后立即添加除空白以外的任何字符。