강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

문자열에서 단어 분리 - SQL Server 2005
작성자 : M 최고의하루
등록날짜 : 2008.12.23 10:00
2,191

가끔 긴 문자열에서 각 단어들을 분리하여 테이블에 저장하고 싶을 경우가 있습니다. 이때 사용할 수 있는 쿼리를 소개하고자 합니다. 먼저 아래 쿼리를 실행합니다.

SET QUOTED_IDENTIFIER OFF
GO
DECLARE @str varchar(2000);
SELECT @str =
"A lonely moon about the sky,
A gentle flower in the breeze,
A giant cloud of smoky stars,
Some sticky honey made by bees.

The soft sweet voice of melody
And moist warm air, which we all breathe
Tremendous power of our minds
Which can make everyone believe..."

SELECT @str = REPLACE(@str, CHAR(10), ' ');
SELECT @str = REPLACE(@str, CHAR(13),  ' ' );

WITH ProcessText AS
(SELECT 1 as startPos, CHARINDEX (' ',@str, 1) as  spacePos 
UNION ALL
SELECT spacePos + 1, CHARINDEX (' ',@str, spacePos + 1)
FROM ProcessText WHERE spacePos > 0)
 
SELECT startPos,
        spacePos,
       SUBSTRING(@str, startPos, spacePos - startPos) AS singleWord
  INTO #words
  FROM ProcessText WHERE spacePos <> 0
 UNION ALL
 SELECT MAX(spacePos) + 1, 0, RIGHT(@str, LEN(@str) - MAX(spacePos))
   FROM ProcessText
 OPTION(MAXRECURSION 0);

위의 쿼리를 실행 후 #words 테이블을 조회해 보면 각 단어들이 모두 분리되어 각각의 위치 정보와 함께 저장되어 있음을 알 수 있습니다.

SELECT * FROM #words

<PRE>startPos spacePos sepWord----------- ----------- --------1 2 A3 9 lonely10 14 moon15 20 about21 24 the25 29 sky,30 30 31 32 A33 39 gentle40 46 flower. . . . . . . . . . . . . . . . .112 116 made117 119 by120 125 bees.126 126 127 127 128 128 129 132 The. . . . . . . . . . . . . . .244 248 make249 257 everyone258 0 believe...</PRE><PRE>또한 문자열에 총 몇개의 단어가 있는지 검사하기 위해서는 아래의 쿼리를 사용할 수 있습니다.</PRE><PRE>SELECT COUNT(*) AS numWords FROM #words WHERE singleWord <>'';
</PRE><PRE>Result:numWords-----------48</PRE><PRE>마지막으로 문자열에 나타난 각 단어들의 빈도수를 분석하는 쿼리입니다.</PRE><PRE>SELECT COUNT(*) AS wordFrequency, singleWord FROM #words GROUP BY singleWord;-- Result:wordFrequency singleWord9 3 A1 about1 air,1 all1 And1 bees.1 believe...1 breathe1 breeze,1 by1 can. . . . . . . . . . . .1 sticky1 sweet3 The1 Tremendous1 voice1 warm1 we2 Which</PRE>

[출처] 웹디황용

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2385 <ms-sql>제약 (constraint)-NOT NULL, DEFAULT, PRIMAY 99 단국강토 12.30 1876
2384 MSSQL Server DBA 가이드-5 M 최고의하루 12.26 2462
2383 MSSQL Server DBA 가이드-4 M 최고의하루 12.26 2525
2382 MSSQL Server DBA 가이드-3 M 최고의하루 12.26 1826
2381 MSSQL Server DBA 가이드-2 M 최고의하루 12.26 1429
2380 MSSQL Server DBA 가이드-1 M 최고의하루 12.26 1602
2379 [SQL] sysobjects M 최고의하루 12.26 2552
2378 1..순위 결정 함수 M 최고의하루 12.24 1703
2377 데이터베이스의 저장 프로시저를 자동으로 생성 M 최고의하루 12.24 3103
열람중 문자열에서 단어 분리 - SQL Server 2005 M 최고의하루 12.23 2192
2375 25가지 SQL작성법-3 M 최고의하루 12.23 1760
2374 25가지 SQL작성법-2 M 최고의하루 12.23 1699
2373 25가지 SQL작성법-1 M 최고의하루 12.23 1839
2372 제약조건(1) M 최고의하루 12.20 4277
2371 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2339
2370 Microsoft SQL Server 2005 Express Edition SP2 M 최고의하루 12.19 2218
2369 Microsoft SQL Server Management Studio Express SP2 M 최고의하루 12.19 2159
2368 [MSSQL] 데이터 백업과 복구 ( SQL SERVER ) M 최고의하루 12.18 2324
2367 [ Sybase ] Sybase 기본 명령어 M 최고의하루 12.18 3680
2366 오라클(Oracle) 10g Database 설치 M 최고의하루 12.04 3064
2365 오라클데이터베이스 복구 M 최고의하루 12.04 1893
2364 MS-SQL2005에서 2000 DTS Package 보기 13 김영철 01.23 2080
2363 MSSQL 내장 함수 목록 13 김영철 01.23 2110
2362 몇가지 sql 명령어 13 김영철 01.23 1809
2361 명령어정리 13 김영철 01.23 1976
2360 order by newid() 13 김영철 01.23 2038
2359 SQL : Categories : 프로시저(Procedure). 13 김영철 01.23 1912
2358 SQL : TRIGGER : TRIGGER 13 김영철 01.23 2024
2357 SQL : Ex : 기본 게시판(BASIC)용 테이블 설계 13 김영철 01.23 1693
2356 반복문만들기 13 김영철 01.23 1750
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취