/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SQL typekonvertering
Fra : Henrik Hougaard


Dato : 29-08-03 12:00

Hejsa, jeg har et problem med et dataudtræ fra 2 tabeller i Navision C5.

Problemet er, at dataformatet på feltet medarbejdernr. ikke er ens i de 2
tabellers nøglefelter. Dvs min Join vil ikke virke - eks.

Format i tbl1 : "30094"
Format i tbl2: " 30094"

Der er simpelhen 4 mellemrum foran tallet i tbl2. Feltet er sikkert også
alfanumerings, hvor det i tbl1 nok er numerisk.

Jeg har ikke mulighed for at rettet formatet direkte i C5's tabeller (hvor
det retterligt burde have været lavet ordentligt fra starten!). Så
spørgsmålet er, om der kan laves en typekonvertering under læsningen af
dataene via C5's SQL driver. Jeg mener at have set andre steder, at det er
driveren, der bestemmer, hvilke SQL funktioner den understøtter.

Hvordans skal SQL strengen lyde hvis jeg skal prøve om den vil acceptere
det?




 
 
Johan Holst Nielsen (29-08-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 29-08-03 13:43

Henrik Hougaard wrote:
> Problemet er, at dataformatet på feltet medarbejdernr. ikke er ens i de 2
> tabellers nøglefelter. Dvs min Join vil ikke virke - eks.
>
> Format i tbl1 : "30094"
> Format i tbl2: " 30094"
>
> Der er simpelhen 4 mellemrum foran tallet i tbl2. Feltet er sikkert også
> alfanumerings, hvor det i tbl1 nok er numerisk.

Kig på http://www.mysql.com/doc/en/String_functions.html ... især efter
den der hedder TRIM i dit tilfælde :)

mvh
Johan


Henrik Hougaard (29-08-2003)
Kommentar
Fra : Henrik Hougaard


Dato : 29-08-03 13:56

Det lyder rigtigt, men hvordan får jeg det lige ind i min SQL sætning, der
ser sådan ud:

SELECT DSP_SagBudKladde.Medarbejder, DSP_SagBudKladde.Sag,
DSP_SagBudKladde.SagsNavn, DSP_SagBudKladde.Kol_1, DSP_SagBudKladde.Kol_2,
DSP_SagBudKladde.Kol_3, DSP_SagBudKladde.Kol_4, DSP_SagBudKladde.Kol_5,
DSP_SagBudKladde.Kol_6, DSP_SagBudKladde.Kol_7, DSP_SagBudKladde.Kol_8,
DSP_SagBudKladde.Kol_9, DSP_SagBudKladde.Kol_10, DSP_SagBudKladde.Kol_11,
DSP_SagBudKladde.Kol_12, DSP_SagBudKladde.LinieKr,
DSP_SagBudKladde.Afdeling, DSP_SagBudKladde.Bærer,
DSP_SagBudKladde.Ansvarlig, DSP_Medarbejder.Initialer,
DSP_Medarbejder.Medarbejder, DSP_SagBudKladde.Medarbejder
FROM DSP_Medarbejder DSP_Medarbejder, DSP_SagBudKladde DSP_SagBudKladde
WHERE DSP_Medarbejder.Medarbejder = DSP_SagBudKladde.Medarbejder


Hvor skal TRIM funktionen indsættes?

Og er den afhængig af om SQL-driveren understøtter den?

"Johan Holst Nielsen" <johan@weknowthewayout.com> skrev i en meddelelse
news:3F4F4A52.8010804@weknowthewayout.com...
> Henrik Hougaard wrote:
> > Problemet er, at dataformatet på feltet medarbejdernr. ikke er ens i de
2
> > tabellers nøglefelter. Dvs min Join vil ikke virke - eks.
> >
> > Format i tbl1 : "30094"
> > Format i tbl2: " 30094"
> >
> > Der er simpelhen 4 mellemrum foran tallet i tbl2. Feltet er sikkert også
> > alfanumerings, hvor det i tbl1 nok er numerisk.
>
> Kig på http://www.mysql.com/doc/en/String_functions.html ... især efter
> den der hedder TRIM i dit tilfælde :)
>
> mvh
> Johan
>



Johan Holst Nielsen (29-08-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 29-08-03 15:13



Henrik Hougaard wrote:
> Det lyder rigtigt, men hvordan får jeg det lige ind i min SQL sætning, der
> ser sådan ud:
>
>
> WHERE DSP_Medarbejder.Medarbejder = DSP_SagBudKladde.Medarbejder

WHERE TRIM(DSP.Medarbejder.Medarbejder) = TRIM(DSP_SagBudKladde.Medarbejder)

mvh
Johan


Henrik Hougaard (31-08-2003)
Kommentar
Fra : Henrik Hougaard


Dato : 31-08-03 12:18

Det var også sådan jeg havde tænkt mig. Men ODBC-driveren returnerer fejlen
"Invalid scalar function", så jeg er bange for at den ikke understøtter
kommandoen TRIM ?.

Lyder det rigtigt?


"Johan Holst Nielsen" <johan@weknowthewayout.com> skrev i en meddelelse
news:3F4F5F54.7030000@weknowthewayout.com...
>
>
> Henrik Hougaard wrote:
> > Det lyder rigtigt, men hvordan får jeg det lige ind i min SQL sætning,
der
> > ser sådan ud:
> >
> >
> > WHERE DSP_Medarbejder.Medarbejder = DSP_SagBudKladde.Medarbejder
>
> WHERE TRIM(DSP.Medarbejder.Medarbejder) =
TRIM(DSP_SagBudKladde.Medarbejder)
>
> mvh
> Johan
>



Henrik Hougaard (31-08-2003)
Kommentar
Fra : Henrik Hougaard


Dato : 31-08-03 12:43

Men TRIM accepteres ikke af driveren (se mit andet indlæg).

Har nu opdaget af RIGHT accepteres. Konstateret ved bare at bruge den på et
felt med SELECT RIGHT(DSP_Medarbejder.Medarbejder,6). Denne stripper de 4
mellemrum ud af strengen som jeg skal.

Men når jeg så indarbejder det i min SQL-sætning, så det ser sådan ud:

SELECT ..... (en masse felter) ... FROM DSP_Medarbejder DSP_Medarbejder,
DSP_SagBudKladde DSP_SagBudKladde
WHERE RIGHT(DSP_Medarbejder.Medarbejder,6) = DSP_SagBudKladde.Medarbejder

Så accepterer den det tilsyneladende (der kommer ingen fejl), men den står
så i lang tid og tænker (timeglas) uden der sker noget. Virket lidt som den
går i løkke eller lign.

Er strengens syntaks da ikke korrekt? - eller andre ideer til en løsning.

mvh

Henrik


"Johan Holst Nielsen" <johan@weknowthewayout.com> skrev i en meddelelse
news:3F4F5F54.7030000@weknowthewayout.com...
>
>
> Henrik Hougaard wrote:
> > Det lyder rigtigt, men hvordan får jeg det lige ind i min SQL sætning,
der
> > ser sådan ud:
> >
> >
> > WHERE DSP_Medarbejder.Medarbejder = DSP_SagBudKladde.Medarbejder
>
> WHERE TRIM(DSP.Medarbejder.Medarbejder) =
TRIM(DSP_SagBudKladde.Medarbejder)
>
> mvh
> Johan
>



Jens Gyldenkærne Cla~ (31-08-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-08-03 13:58

Henrik Hougaard skrev:

> Men TRIM accepteres ikke af driveren (se mit andet indlæg).

Prøv med LTRIM(RTRIM(felt))

Jeg kender ikke til Navision, men i MSSQL findes LTRIM og RTRIM,
mens TRIM ikke findes (mærkeligt nok).

NB: Hvis du svarer nedenunder det du citerer, er det lettere at
følge tråden. Se også min signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste