Veri türleriyle çalışma

Tamamlandı

Transact-SQL'de kullanılan sütunların ve değişkenlerin her birinin bir veri türü vardır. İfadelerdeki değerlerin davranışı, başvurulmakta olan sütunun veya değişkenin veri türüne bağlıdır. Örneğin, daha önce gördüğünüz gibi, iki dize değerini birleştirmek veya iki sayısal değer eklemek için işlecini kullanabilirsiniz + .

Aşağıdaki tabloda, SQL Server veritabanında desteklenen yaygın veri türleri gösterilmektedir.

Tam Sayısal

Yaklaşık Sayısal

Karakter

Tarih/Zaman

İkilik

Diğer

tinyint

kayan noktalı sayı

karakter

tarih

ikili

imleç

smallint

gerçek

varchar

Zaman

varbinary

hierarchyid

Int

Başka bir metin sağlanmadığı için, verilen metne dayalı bir çeviri yapmam mümkün değil. Lütfen çevirilecek metni belirtin.

tarih/zaman

görüntü

sql_variant (SQL veri türü)

bigint

nchar

datetime2

tablo

parça

nvarchar

smalldatetime

Tarih damgası

ondalık/sayısal

ntext

Datetimeoffset (tarih ve zaman belirteci)

tekil tanımlayıcı

sayısal

XML

para

coğrafi bölge

küçükpara

geometri

Not

Farklı veri türleri ve öznitelikleri hakkında daha fazla bilgi için Transact-SQL başvuru belgelerini ziyaret edin.

Veri türü dönüşümü

Uyumlu veri türü değerleri gerektiği gibi örtük olarak dönüştürülebilir. Örneğin, bir ondalık sayıya tamsayı+eklemek veya sabit uzunlukta bir karakter değeri ile değişken uzunluk varchar değerini birleştirmek için işlecini kullanabileceğinizi varsayalım. Ancak bazı durumlarda, değerleri bir veri türünden diğerine açıkça dönüştürmeniz gerekebilir. Örneğin, sayısal değeri uyumlu bir + değerini birleştirmek için kullanmaya çalışırken ondalık değer hataya neden olur.

Not

Örtük ve açık dönüştürmeler belirli veri türleri için geçerlidir ve bazı dönüştürmeler mümkün değildir. Daha fazla bilgi için Transact-SQL başvuru belgelerindeki grafiği kullanın.

T-SQL, veri türleri arasında açıkça dönüştürmenize yardımcı olan işlevler içerir

CAST ve TRY_CAST

Değer hedef veri türüyle uyumluysa, CAST işlevi bir değeri belirtilen veri türüne dönüştürür. Uyumsuzsa bir hata döndürülür.

Örneğin, aşağıdaki sorgu, ProductID sütunundaki tamsayı değerlerini başka bir karakter tabanlı değerle birleştirmek üzere varchar değerlerine (en fazla 4 karakter) dönüştürmek için CAST kullanır:

SELECT CAST(ProductID AS varchar(4)) + ': ' + Name AS ProductName
FROM Production.Product;

Bu sorgudan elde edilen olası sonuç şuna benzer olabilir:

ProductName

680: HL Yol Çerçevesi - Siyah, 58

706: HL Yol Çerçevesi - Kırmızı, 58

707: Spor-100 Kask, Kırmızı

708: Spor-100 Kask, Siyah

...

Ancak, Production.Product tablosundaki Boyut sütununun, bazı sayısal boyutları (58 gibi) ve bazı metin tabanlı boyutları (örneğin "S", "M" veya "L") içeren bir nvarchar (değişken uzunluğu, Unicode metin verileri) sütunu olduğunu varsayalım. Aşağıdaki sorgu, değerleri bu sütundan tamsayı veri türüne dönüştürmeye çalışır:

SELECT CAST(Size AS integer) As NumericSize
FROM Production.Product;

Bu sorgu aşağıdaki hata iletisiyle sonuçlanır:

Hata: 'M' nvarchar değeri int veri türüne dönüştürülürken dönüştürme başarısız oldu.

Sütundaki değerlerden en az bazılarının sayısal olduğu göz önünde bulundurulduğunda, bu değerleri dönüştürmek ve diğerlerini yoksaymak isteyebilirsiniz. Veri türlerini dönüştürmek için TRY_CAST işlevini kullanabilirsiniz.

SELECT TRY_CAST(Size AS integer) As NumericSize
FROM Production.Product;

Bu kez sonuçlar şöyle görünebilir:

SayısalLaştır

58

58

SIFIR

SIFIR

...

Sayısal veri türüne dönüştürülebilen değerler ondalık değer olarak döndürülür ve uyumsuz değerler NULL olarak döndürülür ve bu değer bilinmediğini belirtmek için kullanılır.

Not

Bu ünitenin devamında NULL değerleri işlemek için dikkat edilmesi gereken noktaları inceleyeceğiz.

DÖNÜŞTÜR ve TRY_CONVERT

CAST, veri türleri arasında dönüştürmeye yönelik ANSI standart SQL işlevidir ve birçok veritabanı sisteminde kullanılır. Transact-SQL'de, burada gösterildiği gibi ÇEVİr işlevini de kullanabilirsiniz:

SELECT CONVERT(varchar(4), ProductID) + ': ' + Name AS ProductName
FROM Production.Product;

Bu sorgu bir kez daha belirtilen veri türüne dönüştürülen değeri şu şekilde döndürür:

ProductName

680: HL Yol Çerçevesi - Siyah, 58

706: HL Yol Çerçevesi - Kırmızı, 58

707: Spor-100 Kask, Kırmızı

708: Spor-100 Kask, Siyah

...

CAST gibi, DÖNÜŞTÜR de uyumsuz değerler için NULL döndüren TRY_CONVERT bir değişkene sahiptir.

ÇEVİr'i CAST yerine kullanmanın bir diğer avantajı da, CONVERT'in sayısal ve tarih değerlerini dizelere dönüştürürken biçim stili belirtmenize olanak tanıyan bir parametre içermesidir. Örneğin, aşağıdaki sorguyu göz önüne alın:

SELECT SellStartDate,
       CONVERT(varchar(20), SellStartDate) AS StartDate,
       CONVERT(varchar(10), SellStartDate, 101) AS FormattedStartDate 
FROM SalesLT.Product;

Bu sorgunun sonuçları şuna benzer olabilir:

SatışBaşlangıçTarihi

BaşlangıçTarihi

Biçimlendirilmiş Başlama Tarihi

2002-06-01T00:00:00.0000000

1 Haziran 2002 12:00

6/1/2002

2002-06-01T00:00:00.0000000

1 Haziran 2002 12:00

6/1/2002

2005-07-01T00:00:00.0000000

1 Temmuz 2005 12:00

1/7/2005

2005-07-01T00:00:00.0000000

1 Temmuz 2005 12:00

1/7/2005

...

...

...

Not

CONVERT ile kullanabileceğiniz stil biçimlendirme kodları hakkında daha fazla bilgi edinmek için Transact-SQL başvuru belgelerine bakın.

AYRıŞTıRma ve TRY_PARSE

PARSE işlevi, sayısal veya tarih/saat değerlerini temsil eden biçimlendirilmiş dizeleri dönüştürmek için tasarlanmıştır. Örneğin, aşağıdaki sorguyu (tablodaki sütunlardaki değerler yerine değişmez değerleri kullanan) göz önünde bulundurun:

SELECT PARSE('01/01/2021' AS date) AS DateValue,
   PARSE('$199.99' AS money) AS MoneyValue;

Bu sorgunun sonuçları şöyle görünür:

TarihDeğeri

MoneyValue

2021-01-01T00:00:00.00000000

199.99

CAST ve CONVERT'e benzer şekilde, PARSE'nin uyumsuz değerleri NULL olarak döndüren bir TRY_PARSE varyantı vardır.

Not

Ondalık veya sayısal veri türleriyle çalışırken, tamsayıya yuvarlamanız veya ondalık ayırıcıyı ayarlamanız gerekebilir; bu nokta duyarlık ve ölçekle elde edilebilir. Bu duyarlık ve ölçek kavramını daha iyi anlamak için Transact-SQL başvuru belgelerine bakın.

STR

STR işlevi sayısal bir değeri varchar'a dönüştürür.

Örneğin:

SELECT ProductID,  '$' + STR(ListPrice) AS Price
FROM Production.Product;

Sonuçlar şuna benzer olacaktır:

ProductID

Fiyat

680

1432,00 ABD doları

706

1432,00 ABD doları

Kategori 707

35,00 ABD doları

...

...