[SQL] if statement in query

Pagina: 1
Acties:

  • bendedit
  • Registratie: Oktober 2003
  • Laatst online: 22-12-2025
Het is de bedoeling om dmv een query een heleboel gegevens in 1 maal aan te passen. Normaal gesproken werk ik met mysql en php.
Hieronder staat een klein versie van de tabel:

cmpcode...code...........recovery_acc..........recovery_rev_acc

103..........VATPEXTG...413030.VATPEXTG...415030.VATPEXTG
106..........VBEPEXTS...413010.VATPEXTS...413010.VATPEXTS

Nu is het de bedoeling dat alles wat achter de punt in de colommen "recovery_acc" en "recovery_rev_acc" staat gelijk wordt getrollen met code.

Dus als voorbeeld pak ik de 2e rij waar staat:
"106 VBEPEXTS 413010.VATPEXTS 413010.VATPEXTS"
Dit moet worden
"106 VBEPEXTS 413010.VBEPEXTS 413010.VBEPEXTS"

en vervolgens moet het volgende:
"106 VBEPEXTS 413010.VATPEXTS 413010.VATPEXTS"
dit worden:
"106 VBEPEXTS 413010.VATPEXTS 415010.VATPEXTS"
(Dus het 3e cijfer in colom "recovery_rev_acc" moet een 5 worden.)

Via php is dit makkelijk te doen maar mijn vraag is hoe je dit in een MS SQL 2000 server via MS Access kunt doen. Is het uberhaupt mogelijk om dit puur in een query te doen zonder tussenkomst van een scripting taal?

het is wel belangrijk dat het in 1 keer goed gaat omdat we geen test database hebben draaien. Dus ik kan zelf niet wat gaan testen en proberen, vandaar de vraag of iemand met wat meer ervaring me een beetje in de goede richting kan sturen

Groetjes

[ Voor 4% gewijzigd door bendedit op 03-06-2004 11:04 ]


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 10:24

ripexx

bibs

bendedit schreef op 03 juni 2004 @ 11:02:
Het is de bedoeling om dmv een query een heleboel gegevens in 1 maal aan te passen.
Daar is SQL toch ondermeer voor bedoeld
Via php is dit makkelijk te doen maar mijn vraag is hoe je dit in een MS SQL 2000 server via MS Access kunt doen. Is het uberhaupt mogelijk om dit puur in een query te doen zonder tussenkomst van een scripting taal?
Ben niet echt op de hoogte van MSSQL server maar voor bijvoorbeeld MySQL zijn er zat functies die je kan gebruiken in je queries. Je zal dus even de documentatie er bij moeten pakken.
het is wel belangrijk dat het in 1 keer goed gaat omdat we geen test database hebben draaien. Dus ik kan zelf niet wat gaan testen en proberen, vandaar de vraag of iemand met wat meer ervaring me een beetje in de goede richting kan sturen
Maak des noods een test db maar ga niet dit soort dingen uitvoeren op een live db zonder backup oid. Je kan toch zelf het een of ander testen. Maar pas op met je live db's enzo.

buit is binnen sukkel


Verwijderd

Het is met standaard SQL taal niet goed mogelijk, bij mijn weten.
edit:
Tenminste, afhankelijk van het gedeelte voor de .


Waarom kies je niet voor de makkelijke zekere weg.
Want het is wel mogelijk met stored procedures, maar das hetzelfde als programmeren

[ Voor 35% gewijzigd door Verwijderd op 03-06-2004 11:16 ]


  • bendedit
  • Registratie: Oktober 2003
  • Laatst online: 22-12-2025
ripexx schreef op 03 juni 2004 @ 11:06:
[...]

Daar is SQL toch ondermeer voor bedoeld

[...]

Ben niet echt op de hoogte van MSSQL server maar voor bijvoorbeeld MySQL zijn er zat functies die je kan gebruiken in je queries. Je zal dus even de documentatie er bij moeten pakken.

[...]

Maak des noods een test db maar ga niet dit soort dingen uitvoeren op een live db zonder backup oid. Je kan toch zelf het een of ander testen. Maar pas op met je live db's enzo.
Je hebt wel gelijk maar er staat nogal veel druk op. er is momenteel niet genoeg tijd om en er een complete database naast te gaan draaien. We hebben wel de mogelijkheid om op een test bedrijf te testen... en ik stel limit op 1 of 2 in zodat je kunt zien of het werkt! Maar er blijft inderdaad een groot risico aan zitten..

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
code:
1
2
3
UPDATE Table
SET recovery_acc =  Code + 
SUBSTRING(recovery_acc,0,charindex('.',recovery_acc)+1)


Waarom zou je dit in vredesnaam via access doen? Gewoon bovenstaande code via Query Analyzer uitvoeren. Wel eerst ff testen met een select.

[ Voor 6% gewijzigd door P_de_B op 03-06-2004 11:14 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:17
inderdaad, pak gewoon de query analyzer erbij en ga aan de slag. En een backup van een database draaien is toch niet zoveel moeite? Zeker in MS SQL niet. Scheelt een hoop angstzweet als je de definitieve query op je db loslaat en er verschijnen berichten die je liever niet ziet...

Roomba E5 te koop


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
bendedit schreef op 03 juni 2004 @ 11:11:
[...]


Je hebt wel gelijk maar er staat nogal veel druk op. er is momenteel niet genoeg tijd om en er een complete database naast te gaan draaien. We hebben wel de mogelijkheid om op een test bedrijf te testen... en ik stel limit op 1 of 2 in zodat je kunt zien of het werkt! Maar er blijft inderdaad een groot risico aan zitten..
Hoe groot is die database dan? 100 GB ofzo? Je kunt toch gewoon een testdatabase aanmaken die je vervolgens kunt gebruiken om te testen.
Overigens lijkt het me geen probleem om jouw probleem mbv sql op te lossen. Kijk in Books Online bijvoorbeeld eens naar de functies CHARINDEX, SUBSTRING en REPLACE.

Never underestimate the power of


Verwijderd

Je hebt wel gelijk maar er staat nogal veel druk op. er is momenteel niet genoeg tijd om en er een complete database naast te gaan draaien.
Bedenk wel wat voor risico je loopt. Ik weet niet hoe groot je database is maar even een kopietje maken kan nooit het werk zijn.
Denk maar eens aan hoe groot de druk gaat worden als blijkt dat je update toch niet helemaal goed is gegaan :o . Maak desnoods zelf even een test tabelletje met wat test records waar je kan zien of je update goed gaat. Geloof me het is de moeite waard!!!

Verder moet het met functies als SUBSTRING wel lukken.

edit:
Ik moet wat sneller typen

[ Voor 4% gewijzigd door Verwijderd op 03-06-2004 11:22 ]


  • bendedit
  • Registratie: Oktober 2003
  • Laatst online: 22-12-2025
Bedankt voor alle reacties, ik ga er gelijk mee aan het werk!

p_de_b:
"
UPDATE table
SET recovery_acc = code +
SUBSTRING(recovery_acc,0,charindex('.',recovery_acc)+1)
"
Ik heb het idee dat dit als volgt moet:

UPDATE table
SET recover_acc = SUBSTRING(recover_acc,0,charindex('.',recover_acc)+1) + code

Ik wil niet eigenwijs zijn maar ik dacht het volgende:
SUBSTRING(recover_acc,0,charindex('.',recover_acc)+1) = begin bij positie 0 tot aan positie tot de punt incl. punt.

en hierachter plak je de waarde van colom "code"

Of kan ik denken beter aan een paard over laten?

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik denk dat je het beste zelf even kunt testen of je string functies kloppen. Een string begint trouwens met positie 1, dus niet zero-based.

Never underestimate the power of


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
bendedit schreef op 03 juni 2004 @ 12:24:
Bedankt voor alle reacties, ik ga er gelijk mee aan het werk!

p_de_b:
"
UPDATE table
SET recovery_acc = code +
SUBSTRING(recovery_acc,0,charindex('.',recovery_acc)+1)
"
Ik heb het idee dat dit als volgt moet:

UPDATE table
SET recover_acc = SUBSTRING(recover_acc,0,charindex('.',recover_acc)+1) + code

Ik wil niet eigenwijs zijn maar ik dacht het volgende:
SUBSTRING(recover_acc,0,charindex('.',recover_acc)+1) = begin bij positie 0 tot aan positie tot de punt incl. punt.
Je hebt gelijk, het erge is, dat stond er eerst ook, maar ik heb het ge-edit :X
Ik denk dat je het beste zelf even kunt testen of je string functies kloppen. Een string begint trouwens met positie 1, dus niet zero-based
Klopt idd.

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1