Avatar billede hansa Nybegynder
05. november 2003 - 18:12 Der er 3 kommentarer og
1 løsning

Gennemløbe nvarchar

Hej eksperter,

Er det ikke muligt at gennemløbe en nvarchar, som er kommasepareret?

F.eks.:  1,2,56,126

Jeg skulle gerne have opdelt teksten, så jeg i samme omgang kan hente de sider, ud fra tallene
Avatar billede arne_v Ekspert
05. november 2003 - 18:16 #1
Det havde være 1000 gange nemmere hvis det felt havde været
en separat tabel.

Det er en af relations databaserne sgrundsætninger at værdier
er atomiske.

Jeg kan ikke se nogen praktiske muligheder i TSQL, men du kan
uden tvivl gøre det i applikationen.
Avatar billede hansa Nybegynder
05. november 2003 - 18:47 #2
Ja det ville have været nemmere hvis det lå separat...
Det er desværre ikke mig selv som har oprettet databasen - jeg skal bare hente noget fra den.
Avatar billede venne Nybegynder
06. november 2003 - 10:40 #3
Jeg er selvfølgelig enig med arne_v, men en høker-løsning kunne være denne funktion:

CREATE FUNCTION idliste(@idliste nvarchar(4000))
RETURNS @idtabel TABLE (id int)
AS
BEGIN

DECLARE @s nvarchar(4000)
DECLARE @start int
DECLARE @komma int
DECLARE @id int
SET @start = 1

SET @s = @idliste + ','

SET @komma = CHARINDEX(',', @s, @start)
WHILE @komma > 0
BEGIN
  SET @id = CONVERT(int, LTRIM(RTRIM(SUBSTRING(@s, @start, @komma - @start ))))
  INSERT INTO @idtabel VALUES(@id)
  SET @start = @komma + 1
  SET @komma = CHARINDEX(',', @s, @start)
END

RETURN
END
GO


Nu kan du fx sige:

SELECT *
FROM tabel
WHERE id IN (SELECT id FROM idliste('1,2,56,126'))


Det er klart at performance ikke vil være imponerende.
Og funktionen er ikke særlig robust over for 'syntaksfejl' i id-listen. Men du kan jo selv vurdere om det er noget for dig.
Avatar billede arne_v Ekspert
16. november 2003 - 22:11 #4
Kommet videre ?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester