Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 11633|Yanıt: 0

[Kaynak] SQL Server'da Metin ve varchar(max) veri türleri arasında bir fark vardır

[Bağlantıyı kopyala]
Yayınlandı 13.06.2018 11:07:11 | | |
İlk olarak, varchar(max) Microsoft tarafından kullanılan metin veri türünün yerine geçerMetin gibi eski alan türleri sonraki sürümlerde iptal edilebilir。 Yani hangi metin kaydedilebilir, varchar(max) kesinlikle kaydedilebilir. Aslında, depolayabileceği karakter sayısı çok büyük. Saklanabilen 420 milyon karaktere ulaşmak zor, ki bence ulaşmak zor.

Sadece önceden biliyordummetin ve görüntü, SQL Server tarafından modası geçmiş olabilecek veri türleridir, ancak spesifik nedeni net değil, bugün okuduğumda metin ile varchar(max) ile nvarchar(max) arasındaki farkı buldum; bunun esas olarak operatörlerin kısıtlanması nedeniyle, metin yalnızca aşağıdaki fonksiyonlar tarafından kullanılabilir:
fonksiyonAçıklama
VERI UZUNLUĞUMETIN OKUMA
PATINDEXMETIN BOYUTUNU AYARLA
ALT DIZİGÜNCELLEME METNI
TEXTPTRYAZ METNI
METNVALID


Örneğin, "Metin" sütununun veri tipi metin ise, aşağıdaki örneğin olduğu gibi "=" ve "left()" gibi işlemler için kullanılamaz:

Bir tablo oluşturun ve veriyi doldurun:

eğer varsa (sysobjects'ten * seçin, burada id = OBJECT_ID('[asdf]') ve OBJECTPROPERTY(id, 'IsUserTable') = 1)

DROP TABLE [asdf]

TABLO OLUŞTUR [asdf] (

[inttest] [int] KIMLIK (1, 1) NULL DEĞIL ,

[metin] [metin] NULL ,

[varcharmax] varchar(max) NULL )

TABLOYU DEĞIŞTIR [ASDF] NOCHECK İLE KıSıTLAMA EKLE [PK_asdf] BIRINCIL ANAHTAR KÜMELENMEMIŞ ( [inttest] )



IDENTITY_INSERT [asdf] AÇIK



INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) DEĞERLER ( 1 , '1111111' , '1111111' )



BAŞLAT IDENTITY_INSERT [asdf] HAREKETE GEÇ

Sorguyu çalıştırın:

Soruşturma 1:
SELECT [metin]

      ,[varcharmax]

[testDB]'DEN. [dbo]. [asdf]

burada

[metin] ='11111' VE

[varcharmax] = '1111111'


Aşağıdaki hata mesajı görünür:

Mesaj 402, Seviye 16, Eyalet 1, Hat 1

Veri tipleri metin ve varchar eşit operatörde uyumlu değildir.

Soruşturma 2:
SELECT [metin]

      ,[varcharmax]

[testDB]'DEN. [dbo]. [asdf]

burada

[varcharmax] = '1111111'


başarılı çalışabilir



MS SQL2005 ve üzerinde, büyük değerli veri türleri eklenin (varchar(max), nvarchar(max), varbinary(max)). Büyük değerli veri türü, 2^30-1 bayta kadar veri depolayabilir.

Bu veri türleri, varchar, nvarchar ve varbinary gibi küçük veri tipleriyle davranışsal olarak aynıdır.

Microsoft'un iddiası, önceki metin, ntext ve görüntü veri tiplerini bu veri tipiyle değiştirmek ve aralarındaki karşılık şudur:

varchar(max)-------metin;

nvarchar(max)-----ntext;

varbinary(max)----image.



Büyük değerli veri tiplerinde, büyük değerli verilerle çalışmak eskisine göre çok daha esnektir. Örneğin, metin önceden 'like' olarak kullanılamaz, ancak varchar(max)'dan sonra bu sorunlar yoktur; çünkü varchar(max) davranış olarak varchar(n) ile aynıdır, bu yüzden varcahr'da kullanılabilecek şey varchar(max)'da kullanılabilir.

Ayrıca, bu durum, eklenen ve silinmiş tablolarda büyük değerli veri tipi sütun referanslarında AFTER tetikleyicilerinin kullanılmasını destekler. metin iyi değil, kısacası, büyük değerli veri tipini kullandıktan sonra "belim artık ağrımıyor, bacaklarım ağrımıyor ve bir nefesde altıncı kata çıkabiliyorum" diyorum. Ne bekliyorsunuz, büyük değer tipini kullanın.






Önceki:Hı-hı, hı-hı, hı
Önümüzdeki:EF (lambda ifadesi) verilerde karşılaşılan birkaç istisnayı sorgular
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com