Regexp_Like仅验证大写字符[A-Z]和数字[0-9]

时间:2019-09-04 18:27:40

标签: sql regex oracle regexp-like

我想在Oracle SQL中使用regexp_like进行查询,该查询仅验证大写字符 [A-Z] 和数字 [0-9]

SELECT * 
  FROM dual 
 WHERE REGEXP_LIKE('AAAA1111', '[A-Z, 0-9]')

2 个答案:

答案 0 :(得分:2)

  1. 列表项

select语句probalby应该看起来像

SELECT 'Yes' as MATCHING 
  FROM dual 
 WHERE REGEXP_LIKE ('AAAA1111', '^[A-Z0-9]+$')

这意味着从第一个^到最后一个$字母,每个字符都应为大写字母或数字。重要提示:Z和0之间没有逗号或空格。+代表至少一个或多个字符。

编辑:基于Barbaros的答案,另一种选择方式是可能的

SELECT 'Yes' as MATCHING
  FROM DUAL 
 WHERE regexp_like('AAAA1111','^[[:digit:][:upper:]]+$')

编辑:添加了DBFiddle

可以快速找到帮助here,并使用oracle正则表达式here

答案 1 :(得分:0)

您可以使用:

select str as "Result String" 
  from tab
 where not regexp_like(str,'[[:lower:] ]') 
   and regexp_like(str,'[[:alnum:]]')

其中带有{em> POSIX not regexp_like模式的[^[:lower:]]表示消除字符串  包含小写字母

带有 POSIX regexp_like模式的

[[:alnum:]]代表接受字符串  没有符号

仅包含字母和数字甚至不包含空格,因为[[:lower:] ] 末尾的空格)

Demo