casting σε sql server 2005

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
Swtos
Kilobyte level
Kilobyte level
Posts: 309
Joined: Mon Apr 18, 2005 4:52 pm
Academic status: MSc
Gender:
Location: Δ.Π

casting σε sql server 2005

Post by Swtos » Thu Oct 04, 2007 1:49 pm

Καλησπέρα!

Έχω ένα πρόβλημα με τη μετατροπή ακεραίων σε δεκαδικούς αριθμούς. Χρησιμοποιώ τις ενολές CAST & CONVERT αλλα τιποτα!

π.χ το CAST(5/6 AS DECIMAL) εχει αποτελεσμα 0. Δοκιμασα αντι για decimal και τα float & real αλλα παλι τπτ. Φαντάζομαι θα είναι κατι απλό αλλα προς το παρον δεν εχω βρει λύση...εχει κανεις καμια ιδέα? Ευχαριστω! :-)
-My father made him an offer he couldnt refuse
-What was that?
-Luca Brasi held a gun to his head and my father assured him that either his brain or his signature would be on the contract

-The Godfather
User avatar
P3
Venus Project Founder
Venus Project Founder
Posts: 2722
Joined: Mon Mar 22, 2004 4:12 pm
Academic status: Alumnus/a
Gender:
Location: !! El Paso !!

Post by P3 » Thu Oct 04, 2007 2:26 pm

"Το δικό μου το ποίημα δεν έχει ομοιοκαταληξία.", ο υπογράφων
User avatar
nap
Kilobyte level
Kilobyte level
Posts: 239
Joined: Tue Nov 23, 2004 5:25 pm
Location: In da ghetto
Contact:

Post by nap » Thu Oct 04, 2007 2:29 pm

Από τη στιγμή που διαιρείς int / int, το αποτέλεσμα θα είναι int.
Χρειάζεσαι κάτι της μορφής

Code: Select all

CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)
It is by will alone I set my mind in motion...
User avatar
Swtos
Kilobyte level
Kilobyte level
Posts: 309
Joined: Mon Apr 18, 2005 4:52 pm
Academic status: MSc
Gender:
Location: Δ.Π

Post by Swtos » Fri Oct 05, 2007 12:25 am

nap wrote:Από τη στιγμή που διαιρείς int / int, το αποτέλεσμα θα είναι int.
Χρειάζεσαι κάτι της μορφής

Code: Select all

CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)
Το εχω δοκιμασει και αυτο, ακολουθώντας αυτα που λεει και το λινκ που εδωσε ο Ρ3...

Αυτό που δεν καταλαβαίνω είναι το εξής: Όταν κανω:

Code: Select all

print CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)
εκτυπώνει κανονικά 0.83333...

Όταν όμως κανω, στα πλαίσια ενος UPDATE:

Code: Select all

SET rc = CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)
όπου rc είναι η στήλη ενός πίνακα, δηλωμένη ως DECIMAL τυπώνει 1, στρογγυλοποιεί δλδ το 0.83333 προς τα πανω...

Anyway, ευχαριστώ για τη βοηθεια :-)
-My father made him an offer he couldnt refuse
-What was that?
-Luca Brasi held a gun to his head and my father assured him that either his brain or his signature would be on the contract

-The Godfather
User avatar
Sreak
Venus Project Founder
Venus Project Founder
Posts: 956
Joined: Fri Apr 02, 2004 9:56 am
Academic status: PhD
Location: eltrun.gr

Post by Sreak » Fri Oct 05, 2007 9:12 am

Swtos wrote:
Όταν όμως κανω, στα πλαίσια ενος UPDATE:

Code: Select all

SET rc = CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)
όπου rc είναι η στήλη ενός πίνακα, δηλωμένη ως DECIMAL τυπώνει 1, στρογγυλοποιεί δλδ το 0.83333 προς τα πανω...

Anyway, ευχαριστώ για τη βοηθεια :-)
SET rc = CAST( (CAST(5 AS DECIMAL) / CAST(6 AS DECIMAL)) AS DECIMAL)
User avatar
Swtos
Kilobyte level
Kilobyte level
Posts: 309
Joined: Mon Apr 18, 2005 4:52 pm
Academic status: MSc
Gender:
Location: Δ.Π

Post by Swtos » Fri Oct 05, 2007 7:50 pm

Δεν έπαιξε ούτε με αυτό που γραφει ο ο Sreak...
Τελικά αλλαξα τη στήλη rc από DECIMAL σε FLOAT και όλα τα σχετικά καλουπώματα που γραφτηκαν παραπάνω και έπαιξε...ειλικρινα δεν μπορω να καταλαβω τι ρολο παιζει ο τύπος decimal...

Ευχαριστω για την ανταποκριση :-)
-My father made him an offer he couldnt refuse
-What was that?
-Luca Brasi held a gun to his head and my father assured him that either his brain or his signature would be on the contract

-The Godfather
Post Reply

Return to “Προγραμματισμός”