13. februar 2004 - 14:20Der er
2 kommentarer og 1 løsning
Splitte streng op
Hej,
Er der ikke en funktion, der kan splitte en streng op? Jeg har en tekst i en stored procedure, hvor hvert ord i denne streng skal overføres som parameter til en anden SP.
Er det muligt i SQL-T?
Lidt alla:
... -- Indeholder næste ord, der skal overføres. DECLARE @ord VARCHAR(100) -- Indeholder længden af hele teksten DECLARE @len INT -- Forsætte så længe der er flere ord WHILE BEGIN -- Hente næste ord ud fra teksten. @ord = -- Overføre ordet til SP EXEC dbo.AddWord @value=@ord END
nix, der findes ikke en split i T-SQL. Du kan bygge videre på nedenstående.
create procedure MySplitter(@s varchar(1000)) as declare @s varchar(1000), @a int While len(@s)>0 begin set @a=charindex(';',@s) exec myOwnSp substring(@s,1,@a-1)) set @s = right(@s,len(@s)-@a) end go
Hver lige obs på, at ; er splittegnet og at strengen SKAL slutte med ; for at ovenstående virker.
create procedure MySplitter(@s varchar(1000)) as declare @t varchar(1000), @a int While len(@s)>0 begin set @a=charindex(';',@s) set @t=substring(@s,1,@a-1)) exec myOwnSp @t set @s = right(@s,len(@s)-@a) end go
Super... 1000 tak for hjælpen trer! Jeg fik tilpasset dit eksempel:
CREATE PROCEDURE MySplitter(@content VARCHAR(1000)) AS DECLARE @ord VARCHAR(1000), @ordpos INT SET @content = @content + ' '
WHILE LEN(@content) > 0 BEGIN -- Returns the starting position of the specified expression in a character string. SET @ordpos = CHARINDEX(' ', @content) -1 -- Returns part of a character, binary, text, or image expression. SET @ord = SUBSTRING(@content, 1, @ordpos) -- Returns the part of a character string starting a specified number of integer_expression characters from the right. SET @content = RIGHT(@content, (LEN(@content) - @ordpos + 1)) -- PRINT @ord END GO
EXEC MySplitter @content='Dette er en test'
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.