Avatar billede Søren Bech Morsing Praktikant
09. september 2008 - 15:37 Der er 5 kommentarer og
1 løsning

Varchar felter med tal skal lægges sammen?

Jeg har 5 varchar felter med forskellige decimal værdier i, som gerne vil have lagt sammen.
felter: Tekst1, tekst2, tekst3, tekst4, tekst5

Problemet: jeg vil gerne lægge værdierne sammen af de 5 tekst felter i mit udtræk, dog skal værdi i tekst1 ganges med 1, værdi i tekst2 skal ganges med 2 og så fremdeles

Jeg har lavet dette, så får jeg værdierne korrekt beregnet:
replace(cast(cast((tekst1*1.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst1_ny
replace(cast(cast((tekst2*2.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst2_ny

Men jeg håbede lidt på at jeg også kunne lægge sammen ala: (tekst1_ny + tekst2_ny....) AS total

Håber det er til at forstå
Avatar billede Søren Bech Morsing Praktikant
09. september 2008 - 15:42 #1
Skriver lige min SQL sætning som den ser ud:

SELECT
replace(cast(cast((tekst1*1.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst1_ny,
replace(cast(cast((tekst2*2.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst2_ny,
replace(cast(cast((tekst3*3.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst3_ny,
replace(cast(cast((tekst4*4.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst4_ny,
replace(cast(cast((tekst5*5.0) AS decimal(19,2)) AS varchar), '.', ',') AS tekst5_ny,
(tekst1+tekst2+tekst3+tekst4+tekst5) AS total
FROM testTable

et yderligere problem er at er tekstX blank/tom så skriver den ikke 0 - for måske er det derfor min summering af tallene ikke virker korrekt

(Jeg er sikker på at alle tekstX indeholder blank eller tal)
Avatar billede michaelthomsendk Nybegynder
09. september 2008 - 16:14 #2
Gør noget ved NULL's:
ISNULL(tekst1, '0')

Gør noget ved '':
('0' + tekst1)

Skal de lægges sammen som tekst eller som tal?
Avatar billede Søren Bech Morsing Praktikant
09. september 2008 - 17:20 #3
lægges sammen som tal - fejl i tabellen at det er blevet tal felter ved oprettelsen.
Avatar billede michaelthomsendk Nybegynder
09. september 2008 - 17:50 #4
Cast(Replace(ISNULL('0' + tekst1, '0'), ',', '.') AS float) * 1 AS tal1,
osv. :-)
Avatar billede Søren Bech Morsing Praktikant
11. september 2008 - 10:01 #5
Perfekt - tak for det - læg svar
Kan man bygge IsNumeric med ind - hvis jeg senere har et felt med andet end tal?
Avatar billede michaelthomsendk Nybegynder
11. september 2008 - 12:19 #6
For mig giver det ikke megen mening at tælle sammen på fejlagtige data, så:
Det vile jeg gøre i Where, men ville også lave en test-forespørgsel på dette først.
:-)
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