특정 문자열을 검색하고 설명 필드에 해당 문자열이 들어있는 목록을 작성하도록 요청 받았습니다. 문제가 아니다. 이 경우에는 '% man %'과 같이 'man'을 포함하는 레코드 세트를 사용했습니다. 이것은 또한 '관리', '관리', '인류'등의 출현을 제공합니다. '사람'과 출현 횟수가 포함 된 단어 목록을 포함하는 레코드 세트를 찾고 싶습니다. SQL 2008에서 가능합니까? 그렇다면 올바른 방향으로 나를 가리킬 수 있습니까?SQL 테이블의 문자열이 포함 된 단어 수를 찾으십시오.
1
A
답변
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
어떻게 당신은 "단어를"정의합니까? – NoChance
샘플 데이터 및 예상 출력 –
목록에있는 각 단어의 수를 계산하거나 단일 설명 내의 각 적중 수를 계산하는 것이 좋습니까? – KHeaney