Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Format float in SQL 0.00

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Bill στις 18-02-2011, 20:40. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-02-2011, 00:43 63366

    Format float in SQL 0.00

    Έχω έναν πίνακα με float field και θέλω  πχ το 100 να μου το φέρνει 100.00 γενικά μορφή 0.00
    Πως μπορώ να το κάνω ???

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  18-02-2011, 00:51 63367 σε απάντηση της 63366

    Απ: Format float in SQL 0.00

    Πού θέλεις να το βλέπεις? Το format το κανονίζεις στην εφαρμογή, όχι στην βάση.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-02-2011, 00:58 63368 σε απάντηση της 63367

    Απ: Format float in SQL 0.00

    Θέλω να κάνω export data απο πίνακα και τα θέλω στην μορφή 0.00  
    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  18-02-2011, 01:19 63370 σε απάντηση της 63367

    Απ: Format float in SQL 0.00

    Να γίνω λίγο πιο κατανοητός . Δεν θέλω να αλλάξω τα δεδομένα μου στην βάση. Απλά θέλω να πάρω export τα δεδομένα που είναι float σε μορφή 0.00 .Με ένα απλό select statement αν μπορεί να γίνει ...! Απο όσο είδα στο Convert υπάρχει style option αλλά δεν μπόρεσα να πάρω τα επιθυμητά αποτελέσματα.
    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  18-02-2011, 01:54 63372 σε απάντηση της 63370

    Απ: Format float in SQL 0.00

    δοκίμασε αυτό select cast(yourfield as decimal(5,2))


    Antonios Chatzipavlis

  •  18-02-2011, 10:27 63373 σε απάντηση της 63372

    Απ: Format float in SQL 0.00

    Για δοκιμή έτρεξα το παρακάτω :
    declare @x float
    set @x = 150
    select cast(@x as decimal(5,2))


    δεν μου το έκανε 150.00

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  18-02-2011, 11:14 63375 σε απάντηση της 63373

    Απ: Format float in SQL 0.00

    δεν θα έπρεπε να γίνει αυτό, θα πρέπει να βλέπεις τα δεκαδικά...


    Antonios Chatzipavlis

  •  18-02-2011, 13:30 63389 σε απάντηση της 63373

    Απ: Format float in SQL 0.00

    Bill :
    Για δοκιμή έτρεξα το παρακάτω :
    declare @x float
    set @x = 150
    select cast(@x as decimal(5,2))


    δεν μου το έκανε 150.00

    Είναι λογικό καθώς η cast δεν κάνει format, απλά μετατρέπει από τον ένα τύπο στον άλλο. Εφόσον μετατρέπεις αριθμό πάλι σε αριθμό ο τρόπος εμφάνισης εξαρτάται από τον client, είτε μιλάμε για το Management Studio, είτε για ένα SSIS script είτε για ADO.NET κώδικα. Για παράδειγμα, στο Management Studio σε μηχάνημα με αγγλικό UI βλέπω 150.00. Αν δούλευα με ADO.NET, ελληνικό Locale και αποθήκευα σε string, θα έβλεπα 150,00. Αν το έστελνα σε numeric πεδίο κάποιας άλλης βάσης, π.χ. Access, θα έβλεπα 150. Αλήθεια, πως κάνεις το export και σε τί μορφή?

    Το function το οποίο μετατρέπει αριθμούς σε string στην T-SQL είναι το STR και δέχεται ως παραμέτρους τον συνολικό αριθμό ψηφίων και τα δεκαδικά. Η μετατροπή χρησιμοποιεί πάντα την τελεία ως δεκαδικό, οπότε ίσως να μην σου κάνει.

    Για παράδειγμα, το παρακάτω query

    declare @x float
    set @x = 150
    select str(@x,6,2)
    select str(@x,5,2)
    select str(@x,6,1)
    select str(@x,6,0)
    select str(@x,16,2)

    θα βγάλει

    150.00
    150.0
     150.0
       150
              150.00
    Πρόσεξε και το padding με κενά που κάνει η str όταν δίνω μεγάλο αριθμό ψηφίων.

    Γενικά η T-SQL είναι πολύ φτωχή όσον αφορά το formatting, γι αυτό και κατά κανόνα είναι προτιμότερο να το κάνεις στον client και όχι σε statements


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-02-2011, 13:39 63391 σε απάντηση της 63389

    Απ: Format float in SQL 0.00

    στο select str(@x,6,2)  και x= 150 οκ το φέρνει 150.00 αλλά αν 15000 τότε δεν δουλεύει 
    Βρήκα το παρακάτω το οποίο με βολεύει μέχρι στιγμής :
     declare @x float
    set @x = 15000
    select cast(cast(@x as decimal(10,2)) as varchar) 
     
    ---->15000.00

     declare @x float
    set @x = 150
    select cast(cast(@x as decimal(10,2)) as varchar) 
    --->>150.00


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  18-02-2011, 14:23 63395 σε απάντηση της 63391

    Απ: Format float in SQL 0.00

    Bill :
    στο select str(@x,6,2)  και x= 150 οκ το φέρνει 150.00 αλλά αν 15000 τότε δεν δουλεύει 

    Αν πρόσεξες το 6 είναι ο συνολικός αριθμός ψηφίων (μαζί με το δεκαδικό). Αν του δώσεις νούμερο με 5 ψηφία χωρίς δεκαδικά, το αποτέλεσμα δεν θα έχει δεκαδικά. Είπαμε, η T-SQL είναι πολύ αδύναμη στο string manipulation.

    Και πάλι δεν μου είπες, πως κάνεις το export και σε τί μορφή? Ίσως υπάρχει άλλος τρόπος να το κάνεις που να σε βολέψει περισσότερο. Για παράδειγμα, η εντολή Export του Management Studio δημιουργεί στην πραγματικότητα ένα SSIS package το οποίο διαβάζει δεδομένα από τον SQL και τα σώζει στη μορφή που του πεις. Μπορείς άνετα να το σώσεις και να παρέμβεις στη μορφή με την οποία εξάγονται οι στήλες.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-02-2011, 20:40 63408 σε απάντηση της 63395

    Απ: Format float in SQL 0.00

    Σωστά  το 6 είναι ο συνολικός αριθμός .anyway και όπως λες και μέσα απο το management studio μπορώ να το κάνω...!
    thanks

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems