05. november 2003 - 09:26Der er
6 kommentarer og 1 løsning
Problem med datatypen
Hej,
Jeg har et lille problem med nedenstående statement.
Følgende: (SELECT SUBSTRING(path, 2, LEN(path)-2) FROM dbo.structure WHERE id = 12362) returnerer en liste. Ekspemel: 1,2,10,44
Problemer er at typen er nvarchar, og at jeg gerne skulle bruge listen af typen int. Insætter jeg manuelt tallene som vist i eksemplet virker det fint.
Er der ikke en måde automatisk at konvertere listen til int? Jeg har prøvet med CONVERT, men uden held.
Her er helt statementet:
SELECT * FROM dbo.structure WHERE id IN (SELECT SUBSTRING(path, 2, LEN(path)-2) FROM dbo.structure WHERE id = 12362)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
ok, saa er din eneste mulighed at lave en funktion som splitter strengen, jeg har noget kode liggende et eller andet sted som kan gore dette, saa sig lige til hvis jeg skal lede efter det, optimalt bør du aendre i din database da dataen jo aabentbart gemmes paa en meget ringe maade
Her er det kode jeg udviklede, jeg tror aldrig jeg fik det brugt, men det du skal gore er bare at lave det til en funktion, og istedet for at printe hvert element faar du den bare til at retunere et table, det kan du jo snildt gore med et temptable
CREATE PROCEDURE dbo.test_list @list varchar(8000) AS
declare @varlen int declare @counter int declare @tempvar varchar(8000) declare @commafind int declare @sublen int declare @delimiter char(1) set @delimiter = ','
set @varlen = len(@list) set @counter = 1
while (@varlen >= @counter) begin set @commafind = charindex(@delimiter, @list, @counter) if (@commafind = 0) set @sublen = @varlen else set @sublen = @commafind - @counter
set @tempvar = substring(@list,@counter,@sublen) set @counter = @commafind+1
if (len(@tempvar) > 0) select 'This item is: ' + @tempvar
jow, hvis du faar problemer med at lave funktionen siger du bare til
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.