Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Veri türleri aşağıdaki senaryolarda dönüştürülebilir:
- Bir nesnedeki veriler başka bir nesneye taşındığında, verilerle karşılaştırıldığında veya başka bir nesnedeki verilerle birleştirildiğinde, verilerin bir nesnenin veri türünden diğerinin veri türüne dönüştürülmesi gerekebilir.
- Transact-SQL sonuç sütunundaki, dönüş kodundaki veya çıkış parametresindeki veriler bir program değişkenine taşındığında, verilerin SQL Server sistem veri türünden değişkenin veri türüne dönüştürülmesi gerekir.
Bir uygulama değişkeni ile SQL Server sonuç kümesi sütunu, dönüş kodu, parametre veya parametre işaretçisi arasında dönüştürme yaptığınızda, desteklenen veri türü dönüştürmeleri veritabanı API'si tarafından tanımlanır.
Örtük ve açık dönüştürme
Veri türleri örtük veya açıkça dönüştürülebilir.
Örtük dönüştürmeler kullanıcıya görünmez. SQL Server, verileri otomatik olarak bir veri türünden diğerine dönüştürür. Örneğin, bir smallint bir int ile karşılaştırıldığında, karşılaştırma devam etmeden önce smallint örtük olarak int'e dönüştürülür.
GETDATE() örtük olarak tarih stiline0 dönüştürür.
SYSDATETIME() örtük olarak tarih stiline 21dönüştürür.
Açık dönüştürmeler veya CAST işlevlerini kullanırCONVERT.
CAST ve CONVERT işlevleri bir değeri (yerel değişken, sütun veya başka bir ifade) bir veri türünden diğerine dönüştürür. Örneğin, aşağıdaki CAST işlev sayısal değerini $157.27 öğesinin karakter dizesine '157.27'dönüştürür:
CAST ( $157.27 AS VARCHAR(10) )
Transact-SQL program kodunun CAST ISO ile uyumlu olmasını istiyorsanız yerine kullanınCONVERT. içindeki stil işlevselliğinden CONVERTyararlanmak için yerine CAST kullanınCONVERT.
Aşağıdaki çizimde, SQL Server sistem tarafından sağlanan veri türleri için izin verilen tüm açık ve örtük veri türü dönüştürmeleri gösterilmektedir. Bunlar xml, bigint ve sql_variant içerir. sql_variant veri türünden atamada örtük dönüştürme yoktur, ancak sql_variant örtük dönüştürme vardır.
Önceki grafik, SQL Server'da izin verilen tüm açık ve örtük dönüştürmeleri gösterse de, dönüştürmenin sonuçta elde edilen veri türünü göstermez.
- SQL Server açık bir dönüştürme gerçekleştirdiğinde, sonuçta elde edilen veri türünü deyiminin kendisi belirler.
- Örtük dönüştürmeler için, bir değişkenin değerini ayarlama veya sütuna değer ekleme gibi atama deyimleri, değişken bildirimi veya sütun tanımı tarafından tanımlanan veri türüyle sonuçlanır.
- Karşılaştırma işleçleri veya diğer ifadeler için, sonuçta elde edilen veri türü veri türü önceliği kurallarına bağlıdır.
Örneğin, aşağıdaki betik varchar türünde bir değişken tanımlar, değişkene bir int türü değeri atar, ardından değişkenin bir dizeyle birleştirilmiş birleştirmesini seçer.
DECLARE @string VARCHAR(10);
SET @string = 1;
SELECT @string + ' is a string.'
int değeri 1bir varchar'a dönüştürülür, bu nedenle SELECT deyimi değerini 1 is a string.döndürür.
Aşağıdaki örnekte bunun yerine int değişkenine sahip benzer bir betik gösterilmektedir:
DECLARE @notastring INT;
SET @notastring = '1';
SELECT @notastring + ' is not a string.'
Bu durumda, SELECT deyimi aşağıdaki hatayı atar:
Msg 245, Level 16, State 1, Line 3
Conversion failed when converting the varchar value ' is not a string.' to data type int.
ifadesini @notastring + ' is not a string.'değerlendirmek için SQL Server, ifadenin sonucu hesaplanmadan önce örtük dönüştürmeyi tamamlamak için veri türü önceliği kurallarına uyar.
int, varchar değerinden daha yüksek bir önceliğe sahip olduğundan, SQL Server dizeyi tamsayıya dönüştürmeyi dener ve bu dize tamsayıya dönüştürülemediğinden başarısız olur. İfade dönüştürülebilecek bir dize sağlarsa, aşağıdaki örnekte olduğu gibi deyimi başarılı olur:
DECLARE @notastring INT;
SET @notastring = '1';
SELECT @notastring + '1'
Bu durumda, dize 1 tamsayı değerine 1dönüştürülebilir, bu nedenle bu SELECT deyim değerini 2döndürür. Sağlanan + veri türleri tamsayı olduğunda işleç birleştirme yerine toplamaya dönüşür.
Veri türü dönüştürme davranışları
Bir SQL Server nesnesinin veri türünü başka bir SQL Server nesnesine dönüştürürken bazı örtük ve açık veri türü dönüştürmeleri desteklenmez. Örneğin, nchar değeri görüntü değerine dönüştürülemez. Nchar yalnızca açık dönüştürme kullanılarak ikiliye dönüştürülebilir. İkili dosyaya örtük dönüştürme desteklenmez. Ancak, bir nchar açıkça veya örtük olarak nvarchar'a dönüştürülebilir.
Aşağıdaki makalelerde, ilgili veri türleri tarafından sergilenen dönüştürme davranışları açıklanmaktadır:
- ikili ve varbinary
- datetime2
- para ve smallmoney
- bit
- datetimeoffset
- smalldatetime
- char ve varchar
- ondalık ve sayısal
- sql_variant
- date
- float ve gerçek
- time
- datetime
- int, bigint, smallint ve tinyint
- uniqueidentifier
- xml
- json
OLE Otomasyonu saklı yordamlarını kullanarak veri türlerini dönüştürme
SQL Server Transact-SQL veri türlerini kullandığından ve OLE Otomasyonu Visual Basic veri türlerini kullandığından, OLE Otomasyonu saklı yordamlarının aralarından geçen verileri dönüştürmesi gerekir.
Aşağıdaki tabloda SQL Server'ın Visual Basic veri türü dönüştürmeleri açıklanmaktadır.
| SQL Server veri türü | Visual Basic veri türü |
|---|---|
| char, varchar, metin, nvarchar, ntext | String |
| ondalık, sayısal | String |
| bit | Boolean |
| ikili, varbinary, görüntü | Tek boyutlu Byte() dizi |
| int | Long |
| smallint | Integer |
| tinyint | Byte |
| float | Double |
| real | Single |
| para, smallmoney | Currency |
| tarih zamanı, küçük tarih saati | Date |
Ayarlı her şey NULL |
Değişken Null olarak ayarlanmış |
İkili, varbinary ve görüntü değerleri dışında tüm tek bir SQL Server değerleri tek bir Visual Basic değerine dönüştürülür. Bu değerler Visual Basic'te tek boyutlu Byte() bir diziye dönüştürülür. Bu dizide Byte( 0 to length 1)uzunluk , SQL Server ikili, varbinary veya görüntü değerlerindeki bayt sayısıdır.
Bunlar Visual Basic veri türlerinden SQL Server veri türlerine dönüştürmelerdir.
| Visual Basic veri türü | SQL Server veri türü |
|---|---|
| Uzun, Tamsayı, Bayt, Boole, Nesne | int |
| Çift, Tekli | float |
| Currency | money |
| Date | datetime |
| 4.000 veya daha az karakter içeren dize | varchar/nvarchar |
| 4.000'den fazla karakter içeren dize | Metin/ntext |
8.000 bayt veya daha az olan tek boyutlu Byte() dizi |
varbinary |
8.000 bayttan fazla olan tek boyutlu Byte() dizi |
image |