Διαφορά κλειδιού: Σε συστήματα βάσεων δεδομένων όπως ο SQL Server, ο Char και ο Varchar είναι και οι δύο τύποι δεδομένων, όπου ο χαρακτήρας char αναφέρεται πραγματικά στον χαρακτήρα και ο Varchar αναφέρεται σε μεταβλητό χαρακτήρα. Και οι δύο χρησιμοποιούνται για την αποθήκευση τύπου συμβολοσειράς με μέγιστο μήκος 8.000 χαρακτήρων. Το μέγεθος αποθήκευσης του char είναι το ίδιο με αυτό που δηλώθηκε ενώ το στάδιο sixe του Varchar εξαρτάται από τα bytes των πραγματικών δεδομένων που εισήχθησαν.
Ας πάρουμε ένα παράδειγμα - αν δηλωθεί ένα δεδομένο Char: να δηλώσει τη δοκιμή Char (20) και test = "testing", τότε η δοκιμή θα καταλάβει πρώτα 7 bytes και η ανάπαυση θα συμπληρωθεί με κενά δεδομένα. Από την άλλη πλευρά, εάν ένα δεδομένο Varchar δηλωθεί με έναν τρόπο: δηλώστε τη δοκιμή Varchar (20) και δοκιμάστε = "test", τότε θα καταλαμβάνει μόνο 7 + 2 bytes.
Το Char πρέπει να χρησιμοποιείται όταν το μήκος της μεταβλητής είναι γνωστό, ενώ το Varchar θα πρέπει να χρησιμοποιείται μόνο όταν το μήκος είναι άγνωστο. Ο Char είναι ταχύτερος από τον Varchar, καθώς το σύστημα Varchar ξοδεύει λίγο χρόνο για να ανιχνεύσει το χρόνο για να βρει το τέλος της συμβολοσειράς. Από την άλλη πλευρά, αυτή τη φορά δεν χάνεται στο Char.
Σύγκριση μεταξύ Char και Varchar:
Απανθρακώνω | Varchar | |
Πλήρη μορφή | Χαρακτήρας | Μεταβλητός χαρακτήρας (σε συνάρτηση με χαρακτήρα μεταβλητού μήκους) |
Εννοια | Χρησιμοποιείται για την αποθήκευση μη string Unicode δεδομένων σταθερού μήκους | Χρησιμοποιείται για την αποθήκευση μη-Unicode στοιχειοσειρών δεδομένων μεταβλητού μήκους |
Bytes που χρησιμοποιούνται για αποθήκευση | 1 byte ανά χαρακτήρα | 1 byte ανά χαρακτήρα και 1 ή 2 byte επιπλέον για τη διατήρηση του μήκους των πληροφοριών |
Εφαρμογή | Χρησιμοποιείται για την αποθήκευση δεδομένων όπως τον αριθμό τηλεφώνου κλπ. (Οι καταχωρήσεις δεδομένων είναι συνεπείς.) | Χρησιμοποιείται για την αποθήκευση δεδομένων όπως Διεύθυνση (οι καταχωρήσεις δεδομένων ποικίλλουν σε μεγάλο βαθμό) |
Κατάσταση: συμβολοσειρά εισόδου μικρότερη από τα δηλωμένα bytes | Ο χώρος χωρίς χαρακτήρες θα είναι γεμάτος με χαρακτήρες διαστήματος | Ο χώρος χωρίς χαρακτήρα δεν θα είναι γεμάτος με κανέναν από τους χαρακτήρες |
Κατάσταση: συμβολοσειρά εισόδου περισσότερο από τα δηλωμένα bytes | Η συμβολοσειρά θα περικοπεί σε δηλωμένα byte | Η συμβολοσειρά θα περικοπεί σε δηλωμένα byte. |