SQL 服务器喜欢匹配和排除

SQL Server Like Match and Exclude

我有一个 table (DataTable),其中一列包含如下数据:

DataColumn    
ABCD
ABCE
ABCF
ABXY

我有另一个 table (MatchTable),其中包含模式列和值列,可用于根据匹配项从 DataTable 中获取匹配行:

MatchPattern   Value
AB%            1

我想从结果集中排除 ABCE 行,并且我不想在我的匹配项中包含 ABCD%、ABCF% 等的行 table,因为 ABCE 是规则的例外.我的模式可能是 AB[^C]%,但这将排除所有 ABC,而我只想排除 ABCE。 sql 是:

SELECT D.DataColumn, P.Value
FROM MatchTable M
INNER JOIN DataTable D ON D.DataColumn LIKE M.Pattern

我知道我可以在我的匹配 table 中添加另一列,称为 ExcludePattern 之类的内容,内容如下:

MatchPattern   ExcludePattern Value
AB%            ABCE           1

SELECT D.DataColumn, P.Value
FROM MatchTable M
INNER JOIN DataTable D ON D.DataColumn LIKE M.MatchPattern
                          AND D.DataColumn NOT LIKE M.ExcludePattern

我想知道是否有一种方法可以创建一个类似的模式来匹配一个模式中除 ABCE 之外的所有 AB?基本上,这可以使用内置的 like 来完成,还是我必须实现正则表达式?

绝对没有办法在一个 LIKE 模式中做你想做的事。