Oracle REGEXP_LIKE验证需求:仅允许D/T、数字及竖线|
Oracle REGEXP_LIKE 验证规则实现
针对你需要的验证规则,以下是符合要求的REGEXP_LIKE正则表达式方案:
REGEXP_LIKE(你的字段名, '^[DT](\|(-?\d+(\.\d+)?))+$')
正则规则拆解
^[DT]:字符串开头必须是大写字母D或T\|:匹配分隔符竖线|(正则中需转义,避免被当作逻辑或处理)-?\d+(\.\d+)?:匹配合法数字格式:-?:允许数字带负号(可选)\d+:至少包含一位整数部分(\.\d+)?:可选的小数部分,需满足「小数点+至少一位数字」的格式
(\|...)+:要求开头的D/T之后,必须跟一个或多个「竖线+合法数字」的组合,确保整个字符串符合D/T|数字|数字|...的结构
使用示例
假设你要验证表data_table中的content字段,查询符合规则的记录可执行:
SELECT content FROM data_table WHERE REGEXP_LIKE(content, '^[DT](\|(-?\d+(\.\d+)?))+$');
有效示例
D|1005433608369|202311220039403004157|2023112200394030041570002|0|-53|4157|20231122|30|394|820|2|0|0|0|0 D|1006233842021|202311220039403004160|2023112200394030041600001|1|0|4160|20231122|30|394|868|1|46002136|98|35|0 D|1006233842021|202311220039403004160|2023112200394030041600002|0|-63|4160|20231122|30|394|820|2|0|0|0|0 D|1004420222359|202311220039403004161|2023112200394030041610001|1|0|4161|20231122|30|394|868|1|45941436|108|54|0 D|1004420222359|202311220039403004161|2023112200394030041610002|0|-54|4161|20231122|30|394|820|2|0|0|0|0 D|1005557156227|202311220039403004187|2023112200394030041870001|1|0|4187|20231122|30|394|868|1|46189226|98|2
无效示例
T|2401|20231124|202311240240138702117|1015453705|5|193|00 A+%?Pu?Z?3<???
内容的提问来源于stack exchange,提问作者Efraín Chacón
相关产品推荐
相关产品推荐

