2017-03-03 31 views
0

假設所有列我有一個表:SQL服務器,查找包含在一個字符串

Id int, 
Name varchar(10) 

與價值觀:

(1, Nick), (2, Mike), (3, Eric) 

我想回到一切都包含在一個名稱串。例如「尼克,米克」將返回尼克和邁克。

我試過LIKE,但它的工作方式是返回包含字符串的值。

我一直希望有這樣的事情,但它確實有效。

SELECT * FROM table 
WHERE Name.isContained("Nick, Mike"); 

結果:

1, Nick and 2, Mike 
+1

什麼你到目前爲止已經試過?在你的例子中「......,米克」會回來,邁克? –

+0

你只需要一行中的字符串? –

+0

是的。基本上,包含在搜索字符串中的任何子字符串都是有效的匹配。 –

回答

1

試試這個:

select name from tbl_sound where SOUNDEX(`name`) like '%00%' 
2

試試這個:

SELECT Name 
FROM mytable 
WHERE PATINDEX('%'+Name+'%', 'Nick, Mike') > 0 

Demo here

+0

只需修剪任何尾隨空格,而不是找到匹配 – Stephen

0

演示。查找確切的名稱相匹配

create table demo (
    Id int, 
Name varchar(10)); 

insert demo 
values 
(1, 'Nick'), (2, 'Mike'), (3, 'Eric'); 

declare @prm varchar(200) = 'Nick,Mike,Ann'; 
select * 
from demo 
where ','+ @prm +',' like '%,'+Name+',%' 
; 
0

檢查。

 declare @tmp nvarchar(250) 
     SET @tmp = '' 
     select @tmp = @tmp + concat(ID,' , ',name,' and ') 
     from table 
     where Name in ('Nick','Mike') 

     select SUBSTRING(@tmp, -2, LEN(@tmp)) 

輸出:

enter image description here

相關問題