我需要一个 regexp_like 来仅验证字母 D 或 T、数字和管道

问题描述 投票:0回答:1

我想使用 Oracle 的 regexp_like 只允许以下内容:

  • 字母 D 或 T
  • 任何数字,包括小数和负数
  • 特殊字符管|

非常感谢您的意见:)

以下是有效行

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<???
plsql oracle11g
1个回答
0
投票

您可以使用以下正则表达式模式:

^(-?[0-9]+(\.[0-9]+)?|[DT])(\|(-?[0-9]+(\.[0-9]+)?\|[DT]))*$

Oracle查询:

SELECT val
FROM yourTable
WHERE REGEXP_LIKE(val, '^(-?[0-9]+(\.[0-9]+)?|[DT])(\|(-?[0-9]+(\.[0-9]+)?|[DT]))*$');

演示

© www.soinside.com 2019 - 2024. All rights reserved.