Toon posts:

[SQL] Alter column probleem (convert)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg het niet voor elkaar om een convert of cast te gebruiken in het volgende sql script:

ALTER TABLE ARTICLE
ALTER COLUMN [PRIJS] money
(Dit is de versie zonder cast of convert want alles wat ik probeer loopt op niets uit)

De kolom prijs is nu een varchar en moet een money worden.
De foutmelding die ik krijg is duidelijk:

Server: Msg 260, Level 16, State 1, Line 1
Disallowed implicit conversion from data type varchar to data type money, table 'SHOPDATA.dbo.ARTICLE', column 'PRIJS'. Use the CONVERT function to run this query.

Maar ik kan geen duidelijke documentatie vinden over het gebruik van Convert in een Alter Column.
In de MSDN help over Convert (en over Cast) heb ik geen nuttige info gevonden.

Misschien ook handig om te vermelden dat het scheidingsteken tussen de euro's en de centen nu op een , (komma) staat maar ik heb het ook geprobeerd met een . (punt) als scheidingsteken.
Er komen ook negatieve getallen in voor.

Ik kom er echt niet uit en heb aardig rondgezocht maar ik kom er echt niet uit ;(

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:12
Mja, bij het alteren van je tabel gaat ie dus ook proberen om de gegevens om te zetten, en blijkbaar loopt dat mis.

Wat ik zou doen:
maak een nieuwe tabel met de gewenste structuur, insert alle gegevens uit de tabel met de 'oude' structuur naar de nieuwe tabel (en maak daarbij gebruik van de convert functie), verifieer of de data goed is, drop de oude tabel en rename de nieuwe tabel naar de naam van de 'oude'.

zo dan dus:
code:
1
2
insert into nieuwe_tabel ( bliep, veld, blaat )
select bliep, convert(money, veld), blaat from oude_tabel

En dan met sp_rename de naam van de tabel veranderen (en dan ook de constraints etc... gaan leggen).

[ Voor 23% gewijzigd door whoami op 27-09-2005 17:22 ]

https://fgheysels.github.io/


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

't Gaat makkelijker als je doet:

alter table article add column (trala money)
update article set trala=to_money(prijs)
alter table article drop column prijs

alter table article add column (prijs money)
update article set prijs=trala
alter table article drop column trala

Dan hoef je je verder niet zo'n zorgen te maken over foreign keys die moeten blijven gelden. Dat is misschien lastig als je 't doet door een nieuwe tabel te maken.

[ Voor 46% gewijzigd door Varienaja op 27-09-2005 17:27 ]

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
Bedankt voor de tips,
Ik ga de data in een nieuwe kolom plaatsen om zo dit probleem op te lossen!