0

我想regexp_like在 Oracle 的 SQL 中使用只验证大写字符[AZ]和数字[0-9]的查询

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

2 回答 2

2
  1. 项目清单

选择语句 probalby 应该看起来像

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

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

编辑:根据巴巴罗斯的回答,另一种选择方式是可能的

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

编辑:添加了一个DBFiddle

可以在此处找到快速帮助,并在此处找到有关 oracle 正则表达式的帮助。

于 2019-09-04T18:37:57.817 回答
0

您可以使用 :

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

其中POSIX模式代表消除包含小写的字符串not regexp_like [^[:lower:]]

并且regexp_like使用POSIX [[:alnum:]]模式代表接受不带符号的字符串

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

Demo

于 2019-09-05T07:19:09.460 回答