【发布时间】:2019-09-04 18:27:40
【问题描述】:
我想在 Oracle 的 SQL 中使用 regexp_like 进行查询,它只验证大写字符 [A-Z] 和数字 [0-9]
SELECT *
FROM dual
WHERE REGEXP_LIKE('AAAA1111', '[A-Z, 0-9]')
【问题讨论】:
标签: sql regex oracle regexp-like
我想在 Oracle 的 SQL 中使用 regexp_like 进行查询,它只验证大写字符 [A-Z] 和数字 [0-9]
SELECT *
FROM dual
WHERE REGEXP_LIKE('AAAA1111', '[A-Z, 0-9]')
【问题讨论】:
标签: sql regex oracle regexp-like
select 语句 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
【讨论】:
你可以使用:
select str as "Result String"
from tab
where not regexp_like(str,'[[:lower:] ]')
and regexp_like(str,'[[:alnum:]]')
其中not regexp_like 与POSIX [^[:lower:]] 模式代表消除字符串
包含小写,
and regexp_like with POSIX [[:alnum:]] 模式代表接受字符串
没有符号
(只包含字母和数字甚至不包含空格因为[[:lower:] ]的末尾有空格)
【讨论】:
where regexp_like(str,'[[:alnum:][:upper:]]')。奇怪的是,您仍然需要 [^[:space:]] 以避免空格。
where regexp_like(str,'^[[:alnum:][:upper:]]+$')
EdUARDOFERRREIRA,至少包含小写字母。
where regexp_like(str,'^[[:digit:][:upper:]]+$') .... 和 fiddle。