07. december 2004 - 13:01Der er
17 kommentarer og 2 løsninger
RTRIM problem??
Hej,
Jeg sidder og skal fjerne de sidste 4 karakterer i en streng med variabel længde: SELECT RTRIM('123420016',substr('abcd0016',-4,4)) "RTRIM e.g." FROM DUAL; RTRIM ----- 12342
Hvilket virker fint nok. Men hvis jeg kører denne sql: SELECT RTRIM('123410016',substr('abcd0016',-4,4)) "RTRIM e.g." FROM DUAL; RTRI ---- 1234
Så går det galt, jeg havde forventet: RTRI ---- 12341
Det samme sker gælder for 123400016, 123460016. Det lader til, at det er (0, 1, 6) der giver disse resultater (de tal indgår i det, som skal slettes)
Er der nogen der har en forklaring på dette? Eller en workaround?
senj, Har du prøvet at køre: SELECT RTRIM('1234567810016','0016') A FROM DUAL når det sidste ciffer 12345678(1)0016 før det der skal slettes er indeholdt i det der skal slettes '0016', så bliver det indsatte 1-tal også fjernet. Det samme gælder for 0 og 6?
Ja det er fordi 1-0-6 findes i den TRIMS klausul. Den stopper først med at trimme når den finder 1. char den ikke kan skifte (trimme). Står der altid 0016 tilsidst vil denne virke : SELECT SUBSTR('123456780016',0,length('123456780016')-4)A FROM DUAL virke - det er den samme som ovenfor
Kanon, nu fik jeg den til at virke. Men det er vel teepee der kom med den rigtige løsning? senj får alligevel lidt point for ihærdige forsøg på at overbevise mig
Vil du argumentere, at dine forslag ligger tættere på løsningen før teepee svarede, end teepee's svar (som rigtig nok ikke gav det ønskede resultat)? Det ser umiddelbar ud til, at du ændrer dit svar efter teepee har svaret, således at det ligner teepee's svar mere end det ligner dine tidligere besvarelser.
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.