Bekerja dengan tipe data

Selesai

Kolom dan variabel yang digunakan dalam T-SQL masing-masing memiliki tipe data. Perilaku nilai dalam ekspresi bergantung pada tipe data kolom atau variabel yang direferensikan. Misalnya, seperti yang Anda lihat sebelumnya, Anda dapat menggunakan+ operator untuk menggabungkan dua nilai string, atau untuk menambahkan dua nilai numerik.

Tabel berikut ini menunjukkan tipe data umum yang didukung dalam database SQL Server.

Exact Numeric

Approximate Numeric

karakter

Tanggal/Waktu

Biner

Lainnya

tinyint

float

char

date

biner

cursor

smallint

real

varchar

waktu

varbinary

hierarkiid

int

text

datetime

gambar

aql_variant

bigint

nchar

tanggalwaktu2

tabel

bit

nvarchar

smalldatetime

rentang waktu

decimal/numeric

ntext

tanggalwaktulewat

uniqueidentifier

numeric

xml

money

geografi

smallmoney

geometry

Catatan

Untuk detail selengkapnya tentang berbagai jenis data dan atributnya, kunjungi dokumentasi referensi Transact-SQL.

Konversi tipe data

Nilai jenis data yang kompatibel dapat secara implisit dikonversi sesuai kebutuhan. Misalnya, Anda dapat menggunakan + operator untuk menambahkan bilangan bulat ke angka desimal, atau untuk menggabungkan nilai char dengan panjang tetap dan nilai varchar dengan panjang variabel. Namun, dalam beberapa kasus, Anda mungkin perlu secara eksplisit mengonversi nilai dari satu jenis data ke jenis data lainnya - misalnya, mencoba menggunakan + untuk menggabungkan nilai varchar dan nilai desimal akan menghasilkan kesalahan, kecuali Anda terlebih dahulu mengonversi nilai numerik ke jenis data string yang kompatibel.

Catatan

Konversi implisit dan eksplisit berlaku untuk jenis data tertentu, dan beberapa konversi tidak dimungkinkan. Untuk informasi selengkapnya, gunakan bagan di dokumentasi referensi Transact-SQL.

T-SQL menyertakan fungsi untuk membantu Anda secara eksplisit mengonversi antar jenis data

CAST dan TRY_CAST

Fungsi CAST mengonversi nilai menjadi tipe data tertentu jika nilai kompatibel dengan tipe data target. Kesalahan akan dikembalikan jika tidak kompatibel.

Misalnya, kueri berikut ini menggunakan CAST untuk mengonversi nilai bilangan bulat di kolom ProductID menjadi nilaivarchar (dengan maksimum 4 karakter) untuk menggabungkannya dengan nilai berbasis karakter lain:

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

Hasil dari kueri ini mungkin terlihat seperti berikut ini:

ProductName

680: HL Road Frame - Black, 58

706: HL Road Frame - Red, 58

707: Sport-100 Helmet, Red

708: Sport-100 Helmet, Black

...

Namun, misalkan kolomUkuran pada tabel Production.Product adalah kolom nvarchar (panjang variabel, data teks Unicode) yang berisi beberapa ukuran numerik (seperti 58) dan beberapa ukuran berbasis teks (seperti "S", "M", atau "L"). Kueri berikut ini mencoba mengonversi nilai dari kolom ini menjadi tipe data bilangan bulat:

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

Kueri ini menghasilkan pesan galat berikut ini:

Kesalahan: Konversi gagal saat mengonversi nilai nvarchar ‘M’ menjadi tipe data int.

Mengingat bahwa setidaknya beberapa nilai dalam kolom merupakan numerik, Anda mungkin ingin mengonversi nilai tersebut dan mengabaikan yang lain. Anda dapat menggunakan fungsi TRY_CAST untuk mengonversi tipe data.

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

Kali ini hasilnya mungkin terlihat seperti ini:

NumericSize

58

58

NULL

NULL

...

Nilai yang dapat dikonversi menjadi tipe data numerik dikembalikan menjadi nilai desimal, dan nilai yang tidak kompatibel dikembalikan menjadi NULL, yang digunakan untuk menunjukkan bahwa nilai tidak diketahui.

Catatan

Kami akan mengeksplorasi pertimbangan untuk menangani nilai NULL nanti di unit ini.

CONVERT dan TRY_CONVERT

CAST adalah fungsi SQL standar ANSI untuk mengonversi antar tipe data, dan digunakan dalam banyak sistem database. Dalam T-SQL, Anda juga dapat menggunakan fungsi CONVERT, seperti yang ditunjukkan di sini:

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

Sekali lagi, kueri ini mengembalikan nilai yang dikonversi ke tipe data yang ditentukan, seperti ini:

ProductName

680: HL Road Frame - Black, 58

706: HL Road Frame - Red, 58

707: Sport-100 Helmet, Red

708: Sport-100 Helmet, Black

...

Seperti CAST, CONVERT memiliki varian TRY_CONVERT yang menampilkan NULL untuk nilai yang tidak kompatibel.

Manfaat lain menggunakan CONVERT daripada CAST adalah CONVERT juga menyertakan parameter yang memungkinkan Anda menentukan gaya format saat mengonversi nilai numerik dan tanggal menjadi string. Misalnya, pertimbangkan kueri di bawah ini:

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

Hasil dari kueri ini mungkin terlihat seperti ini:

SellStartDate

StartDate

FormattedStartDate

2002-06-01T00:00:00.0000000

1 Jun 2002 12:00

1/6/2002

2002-06-01T00:00:00.0000000

1 Jun 2002 12:00

1/6/2002

2005-07-01T00:00:00.0000000

1 Jul 2005 12:00

1/7/2005

2005-07-01T00:00:00.0000000

1 Jul 2005 12:00

1/7/2005

...

...

...

Catatan

Untuk mengetahui selengkapnya tentang kode pemformatan gaya yang dapat Anda gunakan dengan CONVERT, lihatdokumentasi referensi Transact-SQL.

PARSE dan TRY_PARSE

Fungsi PARSE dirancang untuk mengonversi string berformat yang mewakili nilai numerik atau tanggal/waktu. Secagai contoh, pertimbangkan kueri berikut (yang menggunakan nilai literal daripada nilai dari kolom dalam tabel):

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

Hasil kueri terlihat seperti ini:

DateValue

MoneyValue

2021-01-01T00:00:00.0000000

199.99

Sama halnya dengan CAST dan CONVERT, PARSE memiliki varian TRY_PARSE yang mengembalikan nilai yang tidak kompatibel dengan NULL.

Catatan

Saat bekerja dengan jenis data desimal atau numerik, Anda mungkin perlu membulatkan ke bilangan bulat atau mengatur titik desimal, yang dapat dicapai melalui presisi dan skala. Untuk lebih memahami konsep presisi dan skala ini, lihatdokumentasi referensi Transact-SQL.

STR

Fungsi STR mengonversi nilai numerik menjadi varchar.

Contohnya:

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

Hasilnya akan terlihat seperti ini:

ProductID

Harga

680

$1432.00

706

$1432.00

707

$35.00

...

...