Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 11633|Απάντηση: 0

[Πηγή] Υπάρχει διαφορά μεταξύ των τύπων δεδομένων Text και varchar(max) στον SQL Server

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 13/6/2018 11:07:11 π.μ. | | |
Πρώτον, το varchar(max) είναι ένα υποκατάστατο του τύπου δεδομένων κειμένου που χρησιμοποιείται από τη Microsoft,Οι παλαιότεροι τύποι πεδίων, όπως το κείμενο, ενδέχεται να ακυρωθούν σε επόμενες εκδόσεις。 Έτσι, τι κείμενο μπορεί να αποθηκευτεί, το varchar( max) μπορεί σίγουρα να αποθηκευτεί. Στην πραγματικότητα, ο αριθμός των χαρακτήρων που μπορεί να αποθηκεύσει είναι πολύ μεγάλος. Οι 420 εκατομμύρια χαρακτήρες που μπορούν να αποθηκευτούν είναι δύσκολο να προσεγγιστούν, κάτι που πιστεύω ότι είναι δύσκολο να προσεγγιστεί.

Ήξερα μόνο πρινΤο κείμενο και η εικόνα είναι τύποι δεδομένων που ενδέχεται να είναι παρωχημένοι από τον SQL Server, αλλά ο συγκεκριμένος λόγος δεν είναι ξεκάθαρος, όταν διάβασα σήμερα, βρήκα τη διαφορά μεταξύ κειμένου και varchar(max) και nvarchar(max), κυρίως λόγω του περιορισμού των τελεστών, το κείμενο μπορεί να χρησιμοποιηθεί μόνο από τις ακόλουθες συναρτήσεις:
λειτουργίαΔήλωση
ΜΉΚΟΣ ΔΕΔΟΜΈΝΩΝΑΝΑΓΝΩΣΜΕΝΟ ΚΕΙΜΕΝΟ
PATINDEXΟΡΙΣΜΌΣ ΜΕΓΈΘΟΥΣ ΚΕΙΜΈΝΟΥ
ΥΠΟΣΥΜΒΟΛΟΣΕΙΡΆΕΝΗΜΕΡΩΣΗΚΕΙΟ
TEXTPTRΓΡΑΠΤΌ ΚΕΊΜΕΝΟ
ΚΕΊΜΕΝΟΈΓΚΥΡΟ


Για παράδειγμα, εάν ο τύπος δεδομένων της στήλης "Κείμενο" είναι κείμενο, τότε δεν μπορεί να χρησιμοποιηθεί για λειτουργίες όπως "=" και "left()", όπως το ακόλουθο παράδειγμα:

Δημιουργήστε έναν πίνακα και συμπληρώστε τα δεδομένα:

αν υπάρχει (επιλέξτε * από sysobjects όπου id = OBJECT_ID('[asdf]') και OBJECTPROPERTY(id, 'IsUserTable') = 1)

DROP TABLE [asdf]

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ [asdf] (

[inttest] [int] ΤΑΥΤΌΤΗΤΑ (1, 1) ΌΧΙ NULL ,

[κείμενο] [κείμενο] NULL ,

[varcharmax] varchar(max) NULL )

ΑΛΛΑΓΗ ΠΙΝΑΚΑ [asdf] ΜΕ NOCHECK ΠΡΟΣΘΗΚΗ ΠΕΡΙΟΡΙΣΜΟΥ [PK_asdf] ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ ΜΗ ΟΜΑΔΟΠΟΙΗΜΕΝΟ ( [inttest] )



ΡΥΘΜΊΣΤΕ IDENTITY_INSERT [ASDF] ΕΝΕΡΓΟΠΟΙΗΜΈΝΟ



ΕΙΣΑΓΩΓΗ [asdf] ( [inttest] , [text] , [varcharmax] ) ΤΙΜΕΣ ( 1 , '1111111' , '1111111' )



ΑΠΕΝΕΡΓΟΠΟΙΉΣΤΕ IDENTITY_INSERT [ASDF]

Εκτελέστε το ερώτημα:

Έρευνα 1:
SELECT [κείμενο]

      ,[varcharmax]

ΑΠΟ [testDB]. [dbo]. [ΑΣΔΦ]

όπου

[text] ='11111' ΚΑΙ

[varcharmax] = '1111111'


Εμφανίζεται το ακόλουθο μήνυμα σφάλματος:

Μήνυμα 402, Επίπεδο 16, Κατάσταση 1, Γραμμή 1

Οι τύποι δεδομένων text και varchar δεν είναι συμβατοί στον τελεστή equal to.

Έρευνα 2:
SELECT [κείμενο]

      ,[varcharmax]

ΑΠΟ [testDB]. [dbo]. [ΑΣΔΦ]

όπου

[varcharmax] = '1111111'


μπορεί να εκτελεστεί με επιτυχία



Σε MS SQL2005 και άνω, προσθέστε τύπους δεδομένων μεγάλης αξίας (varchar(max), nvarchar(max), varbinary(max)). Ο τύπος δεδομένων μεγάλης τιμής μπορεί να αποθηκεύσει έως και 2^30-1 byte δεδομένων.

Αυτοί οι τύποι δεδομένων είναι συμπεριφορικά πανομοιότυποι με τους μικρότερους τύπους δεδομένων varchar, nvarchar και varbinary.

Ο ισχυρισμός της Microsoft είναι να αντικαταστήσει τους προηγούμενους τύπους δεδομένων κειμένου, ntext και εικόνας με αυτόν τον τύπο δεδομένων και η αντιστοιχία μεταξύ τους είναι:

varchar(max)-------κείμενο;

nvarchar(max)-----ntext;

varbinary(max)----εικόνα.



Με τύπους δεδομένων μεγάλης αξίας, είναι πολύ πιο ευέλικτο να εργάζεστε με δεδομένα μεγάλης αξίας από πριν. Για παράδειγμα, το κείμενο δεν μπορεί να χρησιμοποιηθεί "μου αρέσει" πριν, αλλά μετά το varchar(max), δεν υπάρχουν αυτά τα προβλήματα, επειδή το varchar(max) είναι το ίδιο με το varchar(n) στη συμπεριφορά, οπότε αυτό που μπορεί να χρησιμοποιηθεί στο varcahr μπορεί να χρησιμοποιηθεί στο varchar(max).

Επιπλέον, αυτό υποστηρίζει τη χρήση εναυσμάτων AFTER σε αναφορές στηλών τύπου δεδομένων μεγάλης τιμής σε πίνακες που έχουν εισαχθεί και διαγραφεί. Το κείμενο δεν είναι καλό, με λίγα λόγια, μετά τη χρήση του τύπου δεδομένων μεγάλης αξίας, είμαι "η μέση μου δεν πονάει πια, τα πόδια μου δεν πονάνε και μπορώ να ανέβω στον έκτο όροφο με μια ανάσα". Τι περιμένετε, χρησιμοποιήστε τον τύπο μεγάλης αξίας.






Προηγούμενος:Α-χα, ε-χα, ε-χα
Επόμενος:Το EF (έκφραση λάμδα) υποβάλλει ερωτήματα σε διάφορες εξαιρέσεις που συναντώνται στα δεδομένα
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com