首页 > 解决方案 > 正则表达式过滤带点和不带点的数字

问题描述

我有一个包含类别列表的 SQL 表。每个项目都以一个数字(主要类别编号)开头,或者一个数字“点”另一个数字(主要类别编号及其子类别编号)。

例如

10 Main Category A------
10.10 Sub Category A1
10.20 Sub Category A2
20 Main Category B
20.10 Sub Category B1
...

首先,我只需要所有具有主类别编号的条目,在另一个查询中,我必须仅过滤子项,例如以 10 开头并返回所有条目 10.10 和 10.20

我正在制作的程序需要首先选择主类别,然后根据所选的主类别选择子类别。条目(父子)之间的数据库中没有链接,只有一个排序 ID,例如

[0-9][0-9]我知道,但是如何检查一个可能的(但不存在第三个数字),然后没有后面的点。

标签: sqlsql-serverregextsql

解决方案


只有主要类别:[0-9]+ +Category.*

只有子类别:[0-9]+/.[0-9]+ +Sub +Category.*

如果您正在使用 SQL,则使用LIKE@DanielMarcus 建议的方法可能是可行的方法。

另外,注意[0-9][0-9]是多余的。尝试[0-9]{2}(如果期望 0-99 的数字)或[0-9]+(如果期望任何正整数)


推荐阅读