Sql server SQL Server查询以查找字符串中具有精确数字的记录

Sql server SQL Server查询以查找字符串中具有精确数字的记录,sql-server,pattern-matching,Sql Server,Pattern Matching,我正在查询包含以下数据的列 Winners - 1,2,3,4,5,6,21,24 / 2,8,11,21,22,24 / 12,13,15,16 / 12,13,15,21,24 Winners - 2,5 / 2,5 / 1,6,11,12,22,24 / 1,11,12,22,24 Winners - 1,3,5 / 1,3,5 / 4,8,11 / 2,12,14,16,21 select * from scores where results like 'Winners - %[2,

我正在查询包含以下数据的列

Winners - 1,2,3,4,5,6,21,24 / 2,8,11,21,22,24 / 12,13,15,16 / 12,13,15,21,24
Winners - 2,5 / 2,5 / 1,6,11,12,22,24 / 1,11,12,22,24
Winners - 1,3,5 / 1,3,5 / 4,8,11 / 2,12,14,16,21
select * from scores where results like 'Winners - %[2,6]%/%[2,6]%/%[2,6]%/%[2,6]%'
我怎么能在我拥有的四个街区中的任何一个找到有2个或6个的呢? 我目前有一个问题如下

Winners - 1,2,3,4,5,6,21,24 / 2,8,11,21,22,24 / 12,13,15,16 / 12,13,15,21,24
Winners - 2,5 / 2,5 / 1,6,11,12,22,24 / 1,11,12,22,24
Winners - 1,3,5 / 1,3,5 / 4,8,11 / 2,12,14,16,21
select * from scores where results like 'Winners - %[2,6]%/%[2,6]%/%[2,6]%/%[2,6]%'

但这也会返回与21、12、26、16等匹配的值。我想精确匹配2或6。

我确信有一种更好的方法我不知道,但这里有两种解决方案

SELECT *
FROM scores 
WHERE 
((REPLACE(REPLACE(result,'Winners - ', ','), ' / ', ',') + ',') LIKE '%,2,%' 
OR (REPLACE(REPLACE(result,'Winners - ', ','), ' / ', ',') + ',') LIKE '%,6,%')
AND  result LIKE 'Winners - %'



SELECT *
FROM scores     
WHERE (result Like '% 2%' OR result Like '% 6%' OR result  Like '%,2 %' 
 OR result Like '%,6 %' OR result Like '%,2,%' OR result  Like '%,2' OR result  Like '%,6')
AND result LIKE 'Winners - %'

尝试删除,@mainstreetmark有何帮助?[2,6]匹配2、a或6/\D[26]\D/将是匹配2和6的regexpr,但不是匹配12的regexpr。尝试使用REGEXP“[[::]]”中的WHERE分数。不过,我还没有尝试过这个。嗯,在REGEXP中抛出语法错误。如果有帮助的话,我使用的是SQL Server 2008。我有一个工作示例,但它基于多个LIKE and OR,我认为一定有更好的方法。