首页 > 解决方案 > SQL 验证检查

问题描述

我正在尝试在 Sql 中实现数据检查验证控制。

类似于如果我有 PA12345 - 我正在寻找的输出是 CCNNNNN。

在我的脑海中,我正在考虑使用替换功能,但不确定它的优化程序是什么

标签: sqlregexoracle

解决方案


如果我正确地跟随你,你可以使用regexp_replace()两次:

select regexp_replace(regexp_replace(col, '[a-z]', 'C', 1, 0, 'i'), '\d', 'N') newcol from t

内部调用将所有字母字符变为'C',然后外部调用将数字变为'N'

DB Fiddle 上的演示

with t as (select 'PA12345' col from dual)
select regexp_replace(regexp_replace(col, '[a-z]', 'C', 1, 0, 'i'), '\d', 'N') newcol from t
| 纽科尔 |
| :-------- |
| 美国有线电视新闻网 |

但是请注意,这不是验证,而是转码。如果您想要验证字符串的格式是否与预定义的模式匹配,那么您宁愿使用regexp_like()

regexp_like(col, '[a-z]{2}\d{5}', 'i')

推荐阅读