Avatar billede rodding Juniormester
14. december 2004 - 10:56 Der er 6 kommentarer og
1 løsning

SQL - left join numerisk/alfanumerisk

Jeg skal lave et left join hvor et alfanumerisk 1 tal(eksembel) skal sammenlignes med et numerisk 1 tal.

Hvordan klares det?
Det er en db2 database, men kom bare med bud.
Avatar billede hsg Nybegynder
14. december 2004 - 11:22 #1
Din where clause kunne fx. indeholde WHERE INTEGER(ditAlfaNumeriskeFelt) = ditNumeriskeFelt
Avatar billede kjulius Novice
21. december 2004 - 02:06 #2
Du kunne måske bruge CHARACTER funktionen:

WHERE ditAlfafelt = CHARACTER(ditNumeriskeFelt)

Eller du kunne bruge CAST funktionen til at ændre feltdefinitionen

WHERE ditNumeriskeFelt = CAST(ditAlfaFelt AS NUMERIC(1, 0))

Hvis du caster feltdefinitionen så de to ligner hinanden mest muligt, skulle det ikke kunne gå helt galt...
Avatar billede kjulius Novice
21. december 2004 - 02:36 #3
Kom til at se, at du skriver, at det er en left join. Så skal du jo nok snarere bruge

ON ditAlfaFelt = CHARACTER(ditNumeriskeFelt)
eller
ON ditNumeriskefelt = CAST(ditAlfaFelt AS NUMERIC(1, 0))

eller hvis du insisterer på at putte det i WHERE sætningen:
WHERE ditNumeriskeFelt = CAST(ditAlfaFelt AS NUMERIC(1, 0)) OR ditAlfaFelt IS NULL
(hvis ditAlfaFelt sidder på højre side af joinen)

-----
Eksempel:

SELECT ol.ordreID, k.Kundenr, k.Kundenavn, ol.Varenr, v.Varetekst, ol.Antal, v.StkPris, v.StkPris * ol.Antal AS Linieværdi
FROM db1.ordrelinier ol
INNER JOIN db1.varer v ON ol.Varenr = v.Varenr
LEFT JOIN db1.kunder k ON k.Kundenr = CAST(SUBSTR(ol.ordreID, 3, 3) AS NUMERIC(3, 0))
WHERE ol.ordreID = 'OR233BE'

Kundenummeret er her en del af OrdreID (fra pos 3 til 5) - alligevel kan man joine til det numeriske felt Kundenr i kunder.
Avatar billede kjulius Novice
23. december 2004 - 23:31 #4
ON ditAlfaFelt = CHARACTER(ditNumeriskeFelt)
eller
ON ditNumeriskefelt = CAST(ditAlfaFelt AS NUMERIC(1, 0))
Avatar billede rodding Juniormester
26. december 2004 - 00:10 #5
købt
Avatar billede kjulius Novice
23. februar 2005 - 18:28 #6
Foreløbigt har du købt på kredit... :-)
Avatar billede rodding Juniormester
24. februar 2005 - 08:12 #7
Ups - ja det ku' det godt se ud til.

men tak for svarene.
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