Avatar billede somoe Nybegynder
05. april 2005 - 13:35 Der er 4 kommentarer

DB2 ´select kol1, kol2, null as kol3 from tab1´

Jeg kommer fra MS-SQL og er vandt til at nedenstående virker:

select kol1, kol2, null as kol3 from tab1

Men nu er jeg desværre end med en DB2 base, hvor jeg gerne ville lave tilsvarende, men det går ikke umiddelbart godt: "[Error Code: -206, SQL State: 42703]"

Hvis jeg i stedet for at bruge "null as kol3" bruger "0 as kol3" så virker skidtet, med giver jo af gode grunde ikke det ønskede resultat, men nævner det blot for at fortælle, at syntaksen er korrekt (med undtagelse af "null as kol3").
Avatar billede Slettet bruger
14. april 2005 - 14:38 #1
Hvorfor null ?

Hvis du laver: SELECT 0 as KOL3 - så henter du en konstant: 0
som er syntaksmæssigt korrekt. Men null er ikke.
Det skal være en kolonneangivelse eller teksten "null"
Avatar billede Slettet bruger
14. april 2005 - 14:41 #2
Rødmer lige og skriver, at du ikke må bruge " - dobbelt anførselstegn,
men skal bruge enkeltanførselstegn '
Avatar billede somoe Nybegynder
14. april 2005 - 15:15 #3
De dobbelte anførselstegn er ikke en del af mit SQL, men tænkt for at indikere hvad der virker og ikke virker :)

Det fulde sql udtryk er noget allá:

select kol1, kol2, null as kol3 from tab1
union
select kol1, kol2, kol3 from tab2

Og "0 as kol3" er ikke brugbart, da der jo er stor forskel på, om jeg skal vise '0' eller ingenting på min resultat side.

Jeg har valgt at kode mig ud af problemet, men der under mig at man i DB2 kan leve uden den funktionalitet :)
Avatar billede kjulius Novice
07. august 2005 - 01:23 #4
Det er jo et lidt gammelt spørgsmål, men alligevel vil jeg da gerne give mit bidrag.

Da jeg selv bruger det nogen gange, ved jeg, at det godt kan lade sig gøre under DB2. I hvert fald hvis du typecaster feltet:

select kol1, kol2, cast(null as dec(6, 2)) as kol3 from tab1
union
select kol1, kol2, kol3 from tab2

Du skal altså fastsætte variabeltypen, selv om du bare vil have selecten til at returnere null hver gang. I dit tilfælde, skal du typecaste til den samme variabeltype som kol3 er defineret til i din tab2 (anden del af din UNION). At jeg har skrevet CAST(... AS DEC(6, 2)) skal altså bare opfattes som et eksempel.
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