13 February 2016

SQL Server 2008, Isnull dan Coalesce

declare @a varchar(25)
declare @b varchar(25)
declare @c varchar(25)
declare @d varchar(4)

set @a=Null
set @b =Null
set @c='Variabel @c ada isinya'
set @d=null

--Isnull
--Mereplace nilai yang Null menggunakan nilai yang dispesifikasikan
--Tipe data dari ekspresi ditentukan oleh tipe data input pertama
select ISNULL(@a,'Variabel @a Kosong') as [Tes Isnull]

--Jika inputan yang pertama adalah literal null tak bertipe, maka tipe data ekspresi ditentukan oleh input yang kedua
select ISNULL(Null,'Variabel @a Kosong') as [Tes Isnull]

--Jika kedua inputan adalah literal tak bertipe maka tipe data ekspresinya adalah Int
select ISNULL(null,null)

--Akan menampilkan kata 'Saya', karena kepotong, ngikutnya ke tipe dan panjang data input pertama
select ISNULL(@d,'Saya ganteng')

--Coalse
--Mirip dengan Isnull, tapi bisa banyak input
--Tipe data hasil ekspresi ditentukan oleh tipe data input argumen dengan precedence paling tinggi
select coalesce(@a,'Variabel @a Kosong')
select coalesce(@a,@b,'Variabel @a kosong')
select coalesce(@a,@b,@c)

--Error, ini terjadi karena semua inputnya adalah literal null tak bertipe
select coalesce(null,null)
--Tidak akan error karena literal nullnya dicast dulu ke int
select coalesce(cast(null as int),null)

--Akan error, karena tipe data ekspresi ditentukan oleh tipe data yang kedua yg merupakan tipe data int
--Sql mencoba mngkonversi 'abc' ke int
select coalesce('abc',1)

No comments:

Post a Comment

Pengumuman