SQL SERVER FORMAT() FONKSİYONU

Merhabalar,

Sizlerle, yakın zamanda ihtiyacım olan, ancak benzerini dahi internette bulamadığım fonksiyonu paylaşacağım. Fonksiyonun amacı karmaşık bir şekilde girilmiş olan telefon numarası kayıtlarını sabit bir formata şekline çevirme. Fonksiyonda bir çok olasılık değerlendirilmiştir. Düzenleyeceğiniz numaraların tamamını karşılamadığı durumlarda “Case” veya “Replace” ile ekleyebilirsiniz.

SQL Server’ da fonksiyonu yazarken kullandığım FORMAT() fonksiyonu, 2008 R’ den sonrasında eklenmiş bir fonksiyondur. Yani SQL Server 2012 ve sonrasında kullanabilirsiniz.

CREATE function [dbo].[FN_TelNo_Format](@telno nvarchar(max))
returns nvarchar(20)
as
begin
declare @tel_return nvarchar(20)
select @tel_return= FORMAT(tel,'(###) ### ####’)
from (select
cast(left(replace(replace(replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace(replace(
replace (replace(replace(ISNULL(
(case when left( ‘=’+@telno,7)=’=(0021)’ then replace( ‘=’+@telno,’=(0021)’,’21’)
when left( ‘=’+@telno,3)=’=(0’ then replace( ‘=’+@telno,’=(0’,”)
when left( ‘=’+@telno,7)=’=(9005)’ then replace( ‘=’+@telno,’=(9005)’,’5′)
when left( ‘=’+@telno,4)=’=+90’ then replace( ‘=’+@telno,’=+90’,”)
when left( ‘=’+@telno,5)=’=(+90’ then replace( ‘=’+@telno,’=(+90’,”)
when left( ‘=’+@telno,4)=’=(90’ then replace( ‘=’+@telno,’=(90’,”)
when left( ‘=’+@telno,3)=’=(9’ then replace( ‘=’+@telno,’=(9’,”)
when left( ‘=’+@telno,3)=’=90’ then replace( ‘=’+@telno,’=90’,”)
when left( ‘=’+@telno,6)=’=(9085’ then replace( ‘=’+@telno,’=(9085′,’85’)
when left( ‘=’+@telno,5)=’=(905’ then replace( ‘=’+@telno,’=(905′,’5’)
when left( ‘=’+@telno,5)=’=9085’ then replace( ‘=’+@telno,’=9085′,’85’)
when left( ‘=’+@telno,4)=’=085’ then replace( ‘=’+@telno,’=085′,’85’)
when left( ‘=’+@telno,3)=’=05’ then replace( ‘=’+@telno,’=05′,’5’)
when left( ‘=’+@telno,4)=’=0 5’ then replace( ‘=’+@telno,’=0 5′,’5’)
when left( ‘=’+@telno,3)=’=02’ then replace( ‘=’+@telno,’=02′,’2’)
when left( ‘=’+@telno,3)=’=03’ then replace( ‘=’+@telno,’=03′,’3’)
when left( ‘=’+@telno,4)=’=0(2’ then replace( ‘=’+@telno,’=0(2′,’2’)
when left( ‘=’+@telno,4)=’=0 (‘ then replace( ‘=’+@telno,’=0 (‘,”)
when left( ‘=’+@telno,4)=’=0.2’ then replace( ‘=’+@telno,’=0.2′,’2’)
when left( ‘=’+@telno,7)=’=(:021)’ then replace( ‘=’+@telno,’=(:021)’,’21’)
when left( ‘=’+@telno,4)=’=0 2’ then replace( ‘=’+@telno,’=0 2′,’2’)
when left( ‘=’+@telno,8)=’=0049(0)’ then replace( ‘=’+@telno,’=0049(0)’,”)
else @telno end),0),'(‘,”),’)’,”),’:’,”),’ ‘,”),’.’,”),’-‘,”),’/’,”)
,N’D’,”),N’dahili’,”),N’Direkt’,”),’+’,”),N’hat’,”),”,’0′),char(160),”)
,’]’,”),'[‘,”),’Bilinmiyor’,’0′),’C’,”),’–’,”)+’0000000000′,10) as bigint) Tel
) as T
return @tel_return
end

Bu şekilde de kullanabilirsiniz. Eğer numaraların içerisinde dahili numarada dahil ise onu yine update cümlesindeki gibi farklı bir kolona ekleyebilirsiniz.

update [dbo].[OLE DB Destination] set Telephone2= [dbo].[FN_TelNo_Format]([Telephone2]),
Dahili=(case when [Telephone1] like’%-%’ then replace(replace(substring( [Telephone1],charindex(‘-‘, [Telephone1]),10),’-‘,”),’ ‘,”) else NULL end)

telefon

Dahili numaralar için de çıktı aşağıdaki gibidir.

Dahili

Görüşmek üzere….

 

 

Views All Time
Views All Time
Views Today
Views Today

Bunlar da hoşunuza gidebilir...

1 Cevap

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir