【问题标题】:Wildcard Operators to exclude all number before and after a character通配符运算符用于排除字符前后的所有数字
【发布时间】:2020-03-17 11:04:40
【问题描述】:

我想查找所有地址,例如 VIA BOEZIO 6。 我用过:

select address
from tab
where address like '%VIA%BOEZIO%6%'

但不幸的是,结果如下:

有没有办法排除“6”前后的所有数字字符。 你能帮帮我吗?

谢谢 马蒂亚

编辑: 我已经解决了:

其中地址类似于'%VIA%BOEZIO%[^0-9]6[^0-9]%'

【问题讨论】:

  • 什么“8”?我在任何行中都没有看到“8”。
  • 请将您的内容作为文本,而不是图片。

标签: sql oracle sql-like


【解决方案1】:

考虑:

SELECT address
FROM tab
WHERE address LIKE '%VIA%BOEZIO_6%';

这使用_ 仅接受BOEZIO 和数字6 之间的单个字符。这只会匹配:

VIA BOEZIO 6
VIA BOEZIO 6A

【讨论】:

  • 我应该包括任何包含 VIA BOEZIO 6 的数据。我想获得这个列表:-VIA BOEZIO 6 -VIA BOEZIO 6A -VIA BOEZIO,6 -VIA BOEZIO, 6 Pizza
【解决方案2】:

我怀疑你想要regexp_like()

select address
from tab
where regexp_like(address, 'VIA BOEZIO[^0-9]*6')

【讨论】:

    【解决方案3】:

    这将保证在“6”之前或之后没有额外的数字。
    它还允许您在“BOEZIO”和“6”之间任意组合非字母数字字符。

    select address
    from   tab
    where  regexp_like(address, 'VIA BOEZIO(\W|_)+6(\D|$)')
    

    SQL Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多