【问题标题】:Using REGEXP_LIKE function in Oracle DB在 Oracle DB 中使用 REGEXP_LIKE 函数
【发布时间】:2021-11-19 15:20:40
【问题描述】:

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

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

我想使用REGEXP_LIKE() 验证这一点。请提出建议。

【问题讨论】:

  • 好的。你尝试了什么,你在哪里卡住了?
  • regexp_like(string, '^[A-Z][0-9]')

标签: sql oracle oracle11g


【解决方案1】:

您应该能够使用以下 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 正则表达式文档的链接 (Link)

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

【讨论】:

  • 非常感谢您的快速回复...真的很有帮助
  • 请您接受作为有帮助的答案@gayatrimali
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2019-07-21
  • 1970-01-01
相关资源
最近更新 更多