Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  SQL lihtne update märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
nexus4
Kreisi kasutaja
nexus4

liitunud: 01.03.2012




sõnum 15.07.2014 16:19:00 SQL lihtne update vasta tsitaadiga

Ei oska hästi seda googeldada.
Tegu oracle'ga

Mul on vaja lihtsalt muuta ühes veerus andmeid.

Algoritm kõlaks järgnevalt: Kui väärtus 1 siis uus väärtus 2, kui väärtus 3 siis uus väärtus 8 jne.

enamus otsingutulemusi räägivad kuidas muuta väärtust nii, et uued väärtused on kusagilt teisest tabelist ja veerust pärit, mul on vaja lihtsalt öelda, et kui siin on x siis nüüd olgu seal y, a siis nüüd b jne. Tahaks et jääksid ühte päringusse, ideepoolest saaksin kõik ükshaaval ka läbi teha, aga see ei ole mõistlik.

UPDATE tabel1
SET veerg1=CASE veerg1
WHEN 1 THEN 6
WHEN 4 THEN 0,4
WHEN 6 THEN 0,2
END

ei tööta, mis valesti
Kommentaarid: 29 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 26
tagasi üles
vaata kasutaja infot saada privaatsõnum
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 15.07.2014 16:41:21 vasta tsitaadiga

Pole oraakliga kursis v2ga, aga SQL serveris k2ivad need niipidi, et SET veerg1 = (CASE WHEN this THEN 1 ELSE 2 END) ehk sulgudesse, eeldan, et oraaklis peaks samamoodi olema?

Ahhaa, googel ütles nii:

UPDATE table
SET column = CASE
WHEN x THEN y
WHEN x1 THEN y1
ELSE z END

E2: ehk siis sinu puhul vist SET veerg1 = CASE WHEN (veerg1 = 1) THEN 6...

_________________
GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt.
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 07.08.2014 23:16:45 vasta tsitaadiga

oracle8:
  1.  
  2. UPDATE mytable SET x = CASE WHEN x = 'A%'  THEN 'kala'
  3.                             WHEN x = 'E%'  THEN 'konn'
  4. END;


NB! Komaga arvud tuleb eraldada ülakomaga, nt '5,6'. Vististi oleneb ka locale sättetest, aga Oracle sööb nii punkti kui koma samamoodi.

Täisarvudel ei pea olema ülakomaga eraldust, kuid võib.


viimati muutis Le Inc 10.08.2014 15:48:49, muudetud 2 korda
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
kriimsilm
HV kasutaja
kriimsilm

liitunud: 19.05.2002



Autoriseeritud ID-kaardiga

sõnum 07.08.2014 23:39:26 vasta tsitaadiga

Komakohtade eraldajana arvudes kasuta punkti. ELSE klause on puudu lõpust.

Muidu võib kasutada ka DECODE

UPDATE tabel1
SET veerg1=DECODE(veerg1, 1, 6, 4, 0.4, 6, 0.2, veerg1);
Kommentaarid: 12 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  SQL lihtne update
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.