I hope this will be useful to you.
create table sometable ( id integer not null primary key identity , mYWords text not null ); insert into sometable (mYWords) values ('a word that appears maximum number of times in a column') insert into sometable (mYWords) values ('Is it possible to get words from text columns in a sql server database') insert into sometable (mYWords) values ('This could solve my problem if reffered column contain only single word') insert into sometable (mYWords) values ('that' going to require that you split out every word in the column individually') insert into sometable (mYWords) values ('the query will definitely not be easy to write') insert into sometable (mYWords) values ('Please read the sticky at the top of the board') insert into sometable (mYWords) values ('The physical order of data in a database has no meaning') GO CREATE TABLE WordList ( Word varchar(256) , WordId int IDENTITY(1,1) , Add_Dt datetime DEFAULT (GetDate())) GO CREATE UNIQUE INDEX UnqueWords_PK ON WordList(Word) GO CREATE PROC isp_INS_WORD_LIST AS BEGIN SET NOCOUNT ON DECLARE @Words INT, @Pos INT, @x Int, @str varchar(256) , @word varchar(256), @start int, @end int, @exitstart int SELECT @Words = 0, @Pos = 1, @x = -1, @Word = '', @start = 1 DECLARE Cur1 CURSOR FOR SELECT mYWords FROM sometable OPEN Cur1 FETCH NEXT FROM Cur1 INTO @str WHILE @@FETCH_STATUS = 0 BEGIN WHILE (@x <> 0) BEGIN SET @x = CHARINDEX(' ', @str, @Pos) IF @x <> 0 BEGIN SET @end = @x - @start SET @word = SUBSTRING(@str,@start,@end) IF NOT EXISTS (SELECT * FROM WordList WHERE Word = @Word) INSERT INTO WordList(Word) SELECT @word -- SELECT @Word, @@ROWCOUNT,@@ERROR -- SELECT @x, @Word, @start, @end, @str SET @exitstart = @start + @end + 1 SET @Pos = @x + 1 SET @start = @x + 1 SET @Words = @Words + 1 END IF @x = 0 BEGIN SET @word = SUBSTRING(@str,@exitstart,LEN(@str) -@exitstart +1) IF NOT EXISTS (SELECT * FROM WordList WHERE Word = @Word) INSERT INTO WordList(Word) SELECT @word -- SELECT @Word, @@ROWCOUNT,@@ERROR -- SELECT @x, @Word, @exitstart, LEN(@str) -@exitstart , @str END END FETCH NEXT FROM Cur1 INTO @str SELECT @Words = 0, @Pos = 1, @x = -1, @Word = '', @start = 1 END CLOSE Cur1 DEALLOCATE Cur1 SET NOCOUNT OFF RETURN @Words END GO EXEC isp_INS_WORD_LIST GO SELECT * FROM WordList ORDER BY Word GO DROP PROC isp_INS_WORD_LIST DROP TABLE WordList, sometable GO
source share