首页 > 解决方案 > MsSqlServer 正则表达式

问题描述

我有以下正则表达式:[I,F,N,B,H,K,V,Y,E,M,P,IS,IU,PP][0-9]{3,8}

我努力了:

SELECT * 
FROM *table* 
WHERE Description LIKE '%[I,F,N,B,H,K,V,Y,E,M,P,IS,IU,PP][0-9]{3,8}%'

标签: sqlsql-serversql-server-2008sql-server-2012sql-server-2008-r2

解决方案


我猜你想要这些字符串之一作为前缀。也就是说,你真的打算:

(I|F|N|B|H|K|V|Y|E|M|P|IS|IU|PP)[0-9]{3,8}

如果是这样,“3”很重要。但“8”不是——因为“8”匹配“3”。

考虑到这一点,您可以执行以下操作:

where description like '%[IFNBHKVYEMP][0-9][0-9][0-9]%' or
      description like '%I[SU][0-9][0-9][0-9]%' or
      description like '%PP[0-9][0-9][0-9]%' 

严格来说,最后一个条件不是必需的,因为它与第一个条件匹配。


推荐阅读