我正在try 计算出一个在PATINDEX中使用的正则表达式,该正则表达式将匹配特定的模式(因此是PATINDEX).

我需要将前3个字符与003完全匹配 第4个字符可以是除U之外的任何字母字符 他说: 我把这个用在003和A-Z上

SELECT  PATINDEX('%[0][0][3][A-Za-z]%', '003A654')

我试图否定UU,但它没有起作用,它仍然看到了模式.当我把它选到RegExr的时候,它不会认为它否定了U,除非我把它放到它自己的组里,但这也不起作用.

SELECT  PATINDEX('%[0][0][3][A-Za-z^Uu]%', '003U654')
SELECT  PATINDEX('%[0][0][3][A-Za-z][^Uu]%', '003U654')

我知道我可以用PATINDEX和ADD AND SUBSTRING('003U654',4,1) <> 'U'做一些难看的事情,比如匹配003(Alpha),但如果可能的话,我更喜欢做得更干净.

推荐答案

你可以把你的范围分成2部分,go 掉Uu.此外,[0]是相同的0,所以不需要使用字符类.

您的正则表达式为:

SELECT PATINDEX('%003[A-TV-Za-tv-z]%', '003A654')

Sql相关问答推荐

数据库索引:如何使用名称和类别对项目进行最佳索引?

SQL基于多个值 Select 单行

Lag()函数的差异:R与SQL(将R代码转换为SQL)

Ffltter&;Dart SQL Lite包:是否可以在一个查询中执行多条更新语句(每次执行不同的WHERE参数)

如何在SQL中更新Json字符串

按日期时间(不包括秒)连接表

snowflake/SQL嵌套的JSON对象和数组

Select 非重复值并按条件排除行

根据开始日期和结束日期的差异计算每天的计费

ColdFusion+Docker:未安装SQLSERVER包

连续天跟踪购买情况(将标记返回到另一列?)

具有分组条件的不同计数 (DAX)

SQL SUM Filter逻辑解释

插入行时的行安全策略问题

如何对 SQL 表中的连续时间戳进行分组?

在 postgresql 中,我可以将其组合成一个查询吗?

在给定列中具有特定值的行与 SQL 中的总行数的比率

如何通过存储过程将 root 的下一个子 node 作为父 node ?

奇怪的甲骨文行为

从不同的表中 Select 包含单词列表的记录