2014-12-18 17 views
1

특정 문자열을 검색하고 설명 필드에 해당 문자열이 들어있는 목록을 작성하도록 요청 받았습니다. 문제가 아니다. 이 경우에는 '% man %'과 같이 'man'을 포함하는 레코드 세트를 사용했습니다. 이것은 또한 '관리', '관리', '인류'등의 출현을 제공합니다. '사람'과 출현 횟수가 포함 된 단어 목록을 포함하는 레코드 세트를 찾고 싶습니다. SQL 2008에서 가능합니까? 그렇다면 올바른 방향으로 나를 가리킬 수 있습니까?SQL 테이블의 문자열이 포함 된 단어 수를 찾으십시오.

+1

어떻게 당신은 "단어를"정의합니까? – NoChance

+0

샘플 데이터 및 예상 출력 –

+0

목록에있는 각 단어의 수를 계산하거나 단일 설명 내의 각 적중 수를 계산하는 것이 좋습니까? – KHeaney

답변

0

귀하의 질문은 매우 모호하며 출력을 위해 원하는 것이 분명하지 않습니다. 이 같은 것이 올바른 방향으로 향하는 지보십시오.

declare @ValueToFind varchar(20) = 'man' 

select * 
    , ABS((DATALENGTH(replace(SomeValue, @ValueToFind, ''))) - DATALENGTH(SomeValue))/DATALENGTH(@ValueToFind) 
from (Values('manage manager manman'), ('management'), ('mankind manfred'), ('none here')) v(SomeValue) 
0

방법에 관하여 :

CREATE TABLE #temp 
(
[Description] varchar(250) 
) 

INSERT INTO #temp 
VALUES 
    ('a small step for mankind'), 
    ('my manager says'), 
    ('you might manage to purchase this'), 
    ('try to manage this'), 
    ('he was a small man'), 
    ('no woman no cry'), 
    ('no words can describe') 



; 
WITH CTE 
As 
(
    SELECT *, CHARINDEX('man',[Description]) startPos, CHARINDEX(' ', [Description], CHARINDEX('man',[Description])) endPos 
    FROM #temp 
    WHERE [Description] LIKE '%man%' 
), 
WordCTE 
AS 
(
    SELECT [Description], 
      CASE 
       WHEN endPos = 0 THEN SUBSTRING([Description], startpos, 100) 
       ELSE SUBSTRING([Description], startpos, endPos - startPos) 
      END AS [Word] 
    FROM CTE 
) 
SELECT [Word], COUNT(*) 
FROM WordCTE 
GROUP BY [Word] 
0

난 당신이 뭔가를 원했다 생각합니다.

create table Words(text varchar(50)) 

insert into Words Values('man') 
insert into Words Values('management') 
insert into Words Values('man') 
insert into Words Values('management') 
insert into Words Values('mankind') 
insert into Words Values('manpower') 

select temptable.text, count(temptable.text) as 'count' 
from 
(select text 
from Words 
where text like '%man%') as temptable 
group by temptable.text 

http://www.sqlfiddle.com/#!3/a6cdc/1