Avatar billede dresen Nybegynder
03. november 2005 - 15:00 Der er 5 kommentarer og
1 løsning

Konvertering mellem to datatyper

Hej

Jeg vil gerne indsætte data fra en relation ind i en anden. Mit problem ligger i, at der er forskel på datatyperne. Kan jeg konvertere ved brug af sql ?!

Eks.

create table persons9(
name char(80)
)

INSERT INTO Persons9 VALUES ('hej');

create table persons6(
name varchar2(40)
);

INSERT INTO Persons6 VALUES ('dersens');


Når jeg forsøger at sætte værdier ind i persons6 fra persons9, modtager jeg en fejlbesked:

insert into persons6 (name) select name from persons9;

Fejlbesked(actual: 80, maximum: 40)


Jeg vil gerne frem til en løsning, hvor jeg enten koverterer i det jeg indsætter data, eller ved at ændre datatypen for en af relationerne før jeg indsætter data.

Håber I kan hjælpe!!

/dresen
Avatar billede pgroen Nybegynder
03. november 2005 - 15:07 #1
Problemet er at du bruger en char(80) og ikke en varchar2(80)...

Hvis du af en eller anden grund ikke vil lave om på datatypen, kan du bruge:
  INSERT INTO persons6 (name) SELECT trim(name) FROM persons9;
Avatar billede pgroen Nybegynder
03. november 2005 - 15:08 #2
eller måske snarere:
  INSERT INTO persons6 (name) SELECT substr(name,1,40) FROM persons9;
Avatar billede dresen Nybegynder
03. november 2005 - 15:45 #3
Hej pgroen

Det virker .... suverænt

Kan du anbefale en god reference til oracle sql.

Jeg har forsøgt at søge på google, men det er svært at adskille skidtet fra kanelet.

mange tak!!!
Avatar billede dresen Nybegynder
03. november 2005 - 15:56 #4
hvordan kan det være det er muligt at overføre fra varchar2(80) til varchar(40), uden at man laver trim eller substr ?
Avatar billede pgroen Nybegynder
04. november 2005 - 07:39 #5
Forskellen på en char og en varchar2, er at en varchar2 kun bruger den nødvendige plads, mens en char, populært sagt, fylder ud med blanke...

Så længden af 'hej' er 3 i en varchar2(80), men 80 i en char(80).

TRIM funktionen skræller bare de blanke af.



Den ultimative Oracle-reference finder du hos Oracle (!):
http://www.oracle.com/pls/db92/db92.docindex

eller mere SQL-specifikt:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/toc.htm

Du skal være registreret som bruger af Oracle TechNet for at logge på, men det er til gengæld helt gratis, og det tager ca. 2 minutter, så det er bare at komme i gang :-)
Avatar billede dresen Nybegynder
07. november 2005 - 10:53 #6
Hej pgroen

Mange tak for dine gode svar!!!

Mvh/ dresen
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