【问题标题】:Oracle query to find string not containing charactersOracle查询查找不包含字符的字符串
【发布时间】:2023-04-10 09:53:01
【问题描述】:

什么是 Oracle 查询,它将返回字段 mytable.myname 包含 任何 个字符 other 而非

的所有记录
  1. A-Z
  2. a-z
  3. 0-9
  4. -/\()

【问题讨论】:

    标签: regex oracle ascii


    【解决方案1】:

    您可以使用以下内容:

    SELECT * FROM mytable WHERE REGEXP_LIKE (myname, '^[^a-zA-Z0-9\/\\()-]+$');
    

    您也可以使用i 修饰符来做同样的事情:

    SELECT * FROM mytable WHERE REGEXP_LIKE (myname, '^[^a-z0-9\/\\()-]+$', 'i');
    

    解释:

    • ^ 字符串开头
    • [^___ ] 负字符集(将匹配除其中指定的字符以外的任何字符)
    • + 多次匹配上一组
    • $ 字符串结尾

    【讨论】:

    • 你能帮我理解那个语法吗?我总是与 RegEx 斗争。我知道 ^ 表示字符串不是这些字符之一。但是为什么方括号内有第二个 ^ 呢?方括号后面的 +$ 是什么意思?
    • @Marcus ^ 表示字符串的开头.. 和[^ ] 表示not one of these characters.. 没有+ 它将只匹配一个字符.. 检查更新:)跨度>
    • 似乎不起作用。不返回带有此数据的此记录:`¿C¿`
    • 对于“包含any”而不是“包含all”,您应该删除开始/结束锚^...$
    • 这有效:REGEXP_LIKE (mycol, '[^A-Za-z0-9, -./]+')。谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2015-04-19
    • 2011-02-05
    相关资源
    最近更新 更多