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

 

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

update πίνακα με δεκαδικές τιμές

Îåêßíçóå áðü ôï ìÝëïò Q-apprentice. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 03-02-2011, 10:22. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-02-2011, 03:16 62974

    update πίνακα με δεκαδικές τιμές

    Καλησπέρα παιδιά...μια ερώτηση, αν είναι εύκολο...θέλω να κάνω update σε ένα πίνακα σε SQL Server 2008 R2 του οποίου τα πεδία είναι data type decimal(18,2). ένα απλό query (το γράφω μικρό εδώ για να μην ζαλήσω κόσμο) είναι το εξής:

    UPDATE
    [Table]
    SET
    ColumnA= '1,00'
    WHERE
    ColumnB = '0000001794'

    το πρόβλημα είναι ότι ο SQL Server μου εμφανίζει το ακόλουθο λάθος:

    Msg 8114, Level 16, State 5, Line 1
    Error converting data type varchar to numeric.


    ποια είναι η σωστή σύνταξη του sql statement, ώστε να δεχθεί insert/update με δεκαδικές τιμές ;
    το googl-άρα αλλά δεν κατέληξα πουθενά....

    ευχαριστώ εκ των προτέρων..

    Αντώνης Ε. Κόλλιας
  •  03-02-2011, 10:22 62976 σε απάντηση της 62974

    Απ: update πίνακα με δεκαδικές τιμές

    Ψάχνεις για λάθος πράγμα.

    Σε όλες τις βάσεις, όταν βάζεις μία τιμή σε ' ' θεωρείται ότι είναι varchar. Αν θέλεις να δώσεις αριθμό απλά δώσε τον χωρίς '', π.χ. 1.0 . Επιπλέον, το ',' ισχύει ως δεκαδικό μόνο στα ελληνικά. Όταν προσπαθείς να περάσεις τιμή varchar σε πεδίο decimal ο SQL Server θα προσπαθήσει να κάνει τη μετατροπή χρησιμοποιώντας το locale της βάσης. Αν αυτό δεν είναι ελληνικό, θα πάρεις σφάλμα. Γι αυτό δεν πρέπει ΠΟΤΕ να περνάς varchar τιμές όταν στην πραγματικότητα θέλεις να περάσεις decimal, date ή κάποιο άλλο τύπο.

    Υποψιάζομαι ότι το statement δημιουργήθηκε από concatenation όπου προσπαθείς να περάσεις τιμές που έδωσε ο χρήστης. Το concatenation έχει μεγάλα προβλήματα ασφάλειας, performance και όπως βλέπεις, localization. Αντί γι αυτό χρησιμοποίησε query parameters για να περάσεις τις τιμές με το σωστό τύπο χωρίς ζητήματα μετατροπής.

    Η συζήτηση αυτή έχει εμφανιστεί τόσο συχνά στο DNZ που έχουμε και post ειδικά γι αυτό "O SQL Server δεν χρειάζεται κόλπα για να υποστηρίξει ελληνικά". 

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems