Oracle查询查找不包含字符的字符串

Mar*_*eon 1 regex oracle ascii

什么是Oracle查询将返回所有记录的字段mytable.myname包含任何字符,其他

  1. A-Z
  2. a-z
  3. 0-9
  4. -/\()

kar*_*ala 5

您可以使用以下内容:

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

您也可以使用i修饰符执行相同操作:

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

说明:

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

  • 这有效:`REGEXP_LIKE (mycol, '[^A-Za-z0-9, -./]+')`。谢谢大家。 (3认同)
  • 你能帮我理解这个语法吗?我总是与正则表达式作斗争。我知道 ^ 表示字符串不是这些字符之一。但是为什么方括号里面还有第二个^呢?方括号后面的+$ 代表什么? (2认同)
  • @Marcus `^` 表示字符串的开头.. 和 `[^ ]` 表示 `不是这些字符之一`.. 没有 `+` 它将只匹配一个字符.. 检查更新:) (2认同)
  • 对于“包含_any_”而不是“包含_all_”,您应该删除开始/结束锚点`^...$`。 (2认同)