2014-11-04 98 views
0

我查询针对有数据如下SQL Server查询找到字符串

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 

我怎么能找到的人有2个或6中的任何四块我有一个列有确切的数字记录? 我现在有一个查询,如下所示

select * from scores where results like 'Winners - %[2,6]%/%[2,6]%/%[2,6]%/%[2,6]%' 

但也返回与21,12,26,16等的网址。我想精确匹配2个或正好6

+0

尝试删除',' – mainstreetmark 2014-11-04 07:09:36

+0

@mainstreetmark如何这种帮助? – Fred 2014-11-04 07:10:15

+0

'[2,6]'匹配'2',''或'6'。 '/ \ D [26] \ D /'将是一个匹配2和6的正则表达式,但不是12。试试'WHERE REGEXP'[[::<:]][26][[:>:]]''。虽然我没有尝试过。 – mainstreetmark 2014-11-04 07:16:14

回答

0

我肯定有一个更好的办法,我不知道,但这里有两种解决方案

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 - %'