В SQL Server 2008 вы можете использовать sys.dm_fts_parser
, чтобы разбить строку на слова.Вы можете включить это с cross apply
.
DECLARE @data TABLE
(
id INT IDENTITY(1,1) PRIMARY KEY,
words VARCHAR(1000),
other_field VARCHAR(1000),
another_field VARCHAR(1000)
)
INSERT INTO @data (words)
VALUES ('white'),('some words'),('some other w '),('This sentence has 5 words');
WITH splitData AS
(
SELECT
id ,
max(case when occurrence = 1 then display_term end) as word1,
max(case when occurrence = 2 then display_term end) as word2,
max(case when occurrence = 3 then display_term end) as word3,
max(case when occurrence = 4 then display_term end) as word4
FROM @data
CROSS APPLY sys.dm_fts_parser('"' + REPLACE(words,'"','') + '"',1033,NULL,0)
GROUP BY id
HAVING MAX(occurrence) <= 4
)
UPDATE @data
SET words = word1, other_field=word2, another_field=word3 + ISNULL(' ' + word4,'')
FROM @data d1
JOIN splitData sd ON d1.id = sd.id
SELECT * FROM @data
Выход
id words other_field another_field
------ ------------------------------ --------------- --------------
1 white NULL NULL
2 some words NULL
3 some other w
4 This sentence has 5 words NULL NULL