我正在try 在SQL Server中执行正则表达式匹配.

Microsoft SQL Server 2019(RTM-CU1)(KB4527376)-15.0.4003.23(X64)2019年12月6日14:53:33版权所有(C)Linux(Red Hat Enterprise Linux 8.0(Ootpa))上的2019 Microsoft Corporation Developer Edition(64位)

要查询如下内容,请执行以下操作: SELECT * FROM *table* WHERE [Item] LIKE '[H][0-9][0-9]%'

[H][0-9][0-9]%只与字母H匹配,[0-9]可以匹配0-9之间的任何数字.我放两次平均值将得到H之后的两个数字,%将匹配任何字符串,因为我想得到像H03.1这样的项目.

以下是我的数据表:

id Item
1 H23
2 H03.1
3 H030BZZ
4 H03YYZZ
5 H2261ZZ
6 H51Q1ZZ

我只想匹配H[0-9][0-9],但不匹配除字母H以外的任何字母. 例如:我想要H23和H03.1,但不想得到H030BZZ、H03YYZZ、H2 261ZZ、H51Q1ZZ.

我试过这样的代码:

WHERE [Item]  NOT LIKE '[H][0-9]{0,3}[A-Z]{0,3}

但还是达不到我的目标.任何建议都会很有帮助.

推荐答案

您可以使用以下查询首先判断Item是否以H[0-9][0-9]开头,然后判断它是否在前3个字符之后没有字母:

SELECT * 
FROM table1 
WHERE [Item] LIKE '[H][0-9][0-9]%'
  AND [Item] NOT LIKE '___%[A-Z]%'

输出(针对您的示例数据):

id  Item
1   H23
2   H03.1

dbfiddle上的演示

Sql相关问答推荐

帮助修复查询以识别SQL DW中数据中的递归关系

在SQL中使用类别值将行转置为列

为什么两个不同的窗口函数给出不同的排序结果?

NULL-生成的列中连接的字符串的输入

如何从查询中的三个或更多个表中添加另一个相同的列?

如何为该查询编写正确分区依据

使用同一个表,为什么IN、NOT IN、NOT EXISTS和EXISTS有不同的输出?

在Oracle SQL中按月生成日期

其中使用表名作为;行值;记录?

如何使用 Google BigQuery 中的条件根据特定列值连接列的 N 行?

SQL Server - 复杂场景 - 比较状态并填充值到后续行

如何对 jsonb 中的字段执行求和,然后使用结果过滤查询的输出

如何在sparksql查询中使用日期值?

BigQuery导航函数计算ID

创建定时器以更新Gridview

PostgreSQL - 递归地聚合来自不同列的属性

编写查询以根据级别 (p2) 返回父位置

SQL Server 分区和 Run Case 语句

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

PostgreSQL 中的递归树查询