SQL Server喜欢匹配和排除

时间:2015-01-17 23:52:59

标签: sql-server regex sql-like

我有一个表(DataTable),其中一列包含以下列中的数据:

DataColumn    
ABCD
ABCE
ABCF
ABXY

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

MatchPattern   Value
AB%            1

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

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

我知道我可以在我的匹配表中添加另一个列,例如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在一个模式中?基本上,这可以使用内置的方式完成,还是必须实现正则表达式?

1 个答案:

答案 0 :(得分:0)

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