sql - SQL 验证检查
问题描述
我正在尝试在 Sql 中实现数据检查验证控制。
类似于如果我有 PA12345 - 我正在寻找的输出是 CCNNNNN。
在我的脑海中,我正在考虑使用替换功能,但不确定它的优化程序是什么
解决方案
如果我正确地跟随你,你可以使用regexp_replace()
两次:
select regexp_replace(regexp_replace(col, '[a-z]', 'C', 1, 0, 'i'), '\d', 'N') newcol from t
内部调用将所有字母字符变为'C'
,然后外部调用将数字变为'N'
。
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')
推荐阅读
- android - 如何在 android studio 中将 MathView 和波斯文本与正确格式结合在一起
- linux - 使用任何 VLAN 标记接收和 TC 重定向流量
- javascript - 插入对象是匹配数组
- r - 将 p 值添加到 polr 模型(用于模型摘要)
- typescript - 如何排除类字段被继承或以某种方式覆盖它?
- android - RecyclerView 和 ListView 在某些设备上出现偏移——可能的图形故障
- reactjs - 如何使用 Context with Hooks 在 ReactJS 中保持状态更新
- javascript - FormData 中的 Nodejs 额外数据
- python - 将 rgb 值转换为一个热标签
- c++ - 符号可见性 - 共享库与 dll