Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Splitta med cursor?

Postades av 2003-09-11 10:26:07 - Micke Svensson, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 838 personer

Script: ASP
Databas: SQL 2000 Server

Har två tabeller som nästan är exakt lika!

table1 och table2.

table1 har en massa värden i sig som jag vill föra
över till table2. För detta kör jag en insert from
vilket fungerar bra.

Kruxet är dock att jag har ett attribut som heter
SVAR_ID, som i table1 kan innehålla 1,2 alltså flera
värden. Jag vill vid överföringen splitta dessa så
1 och 2 hamnar i en egen rad.

Table1
===========================
ID FRAGA SVAR_ID
1 1 3
2 2 1,2


Ska alltså i Table2 bli:
===========================
ID FRAGA SVAR_ID
1 1 3
2 2 1
3 2 2

Kan jag vid inserten splitta värdet på något
smart sätt?

Har fått tips om att använda cursor men får inte
till det =(

Någon snäll som kan hjälpa?
Har pulat med detta flera veckor nu utan att få till det.


Svara

Sv: Splitta med cursor?

Postades av 2003-09-11 14:05:49 - Christoffer Hedgate

Du ska <b>absolut inte använda en cursor</b>. De som tipsat dig om det kan du meddela att de har fel, man ska inte använda cursors.
Du behöver istället en tabell med nummer (alt. skapar du en virtuellt i själva frågan) som helt enkelt innehåller ett antal rader med siffor i följd (lika många som maxlängden på Table1.SVAR_ID). Om du inte redan har en sådan tillgänglig föreslår jag att du skapar en med t ex nedanstående kod, den är mycket användbar i vissa avancerade frågor som denna.

<code>
IF EXISTS ( SELECT * FROM sysobjects WHERE [name] = 'NUMBERS' )
DROP TABLE NUMBERS
GO
CREATE TABLE NUMBERS (n int identity(1,1), foo int)
GO

INSERT INTO NUMBERS (foo)
SELECT a.id
FROM sysobjects a, sysobjects b
GO

CREATE CLUSTERED INDEX ixcNUMBERS ON NUMBERS (n)
GO
</code>

När du nu har din nummertabell är det bara att joina mot den

<code>
INSERT INTO Table2 (FRAGA, SVAR_ID)
SELECT FRAGA, SUBSTRING(SVAR_ID, n, CHARINDEX(',', SVAR_ID+',', n) - n) AS SVAR_ID
FROM Table1
INNER JOIN NUMBERS ON n <= LEN(SVAR_ID)
WHERE SUBSTRING(','+SVAR_ID, n, 1) = ','
</code>


Svara

Sv: Splitta med cursor?

Postades av 2003-09-19 13:42:49 - Micke Svensson

Christoffer du är fan guld värd!!!

Har suttit med detta problem hur länge som helst och tack
vare dig är det nu löst!

Tack så mycket!

Jag glad =D


Svara

Sv: Splitta med cursor?

Postades av 2003-09-19 22:44:36 - Christoffer Hedgate

Tack för det, det är alltid kul att kunna hjälpa till. Glöm inte visa lösningen för de som rekommenderade en cursor, det är alltid bra att kunna visa en bättre lösning än en cursor.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
566
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies