首页 > 解决方案 > 在 Oracle DB 中使用 REGEXP_LIKE 函数

问题描述

我想验证一个字符串。条件是:

  1. 它应该是 9 小时长。
  2. 第一个字符应该是字母(大写)。
  3. 剩余字符应介于09之间
  4. 不允许有特殊字符

我想使用REGEXP_LIKE(). 请建议。

标签: sqloracleoracle11g

解决方案


您应该能够使用以下 REGEXP_LIKE 来验证您的输入:

REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}$')

解释正则表达式:

  • ^- 字符串的开头
  • [A-Z]- 大写字母
  • [0-9]{8}- 正好 8 位字符
  • $- 字符串结束

这是验证某些用例的查询:

WITH test_data (text_value) AS
(
  SELECT 'A12345678' FROM DUAL UNION ALL
  SELECT 'a12345678' FROM DUAL UNION ALL
  SELECT 'A1234567' FROM DUAL UNION ALL
  SELECT 'A123456789' FROM DUAL UNION ALL
  SELECT '$12345678' FROM DUAL
)
SELECT td.text_value, 
       CASE WHEN REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}$') THEN 'Y' ELSE 'N' END AS VALID
FROM test_data td

这是 Oracle 正则表达式文档的链接(链接

此外,这是一个运行上述查询的 DBFiddle ( Link )


推荐阅读