Herkese merhaba,

Bu yazıda SQL Server’da ISNUMERIC fonksiyonu yerine TRY_PARSE fonksiyonu kullanmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da özelleştirilmiş fonksiyonları kullanmayanımız yoktur. Bu fonksiyonlar çoğu zaman hayat kolaylaştırır ancak bir o kadar da işinize yaramayabilir.

Bu yazıda oluşturulmuş olan özelleştirilmiş fonksiyonlarda dikkat edilmesi gereken noktalardan bahsedeceğim.

ISNUMERIC fonksiyonu verilen değerin sayısal bir ifade olup olmadığını kontrol etmek için kullanılır. Kullanımı : ISNUMERIC (ifade) şeklindedir. eğer ifade sayısal ise sorgu sonucu 1 döner diğer durumda 0 döner.

Aşağıdaki sorguyu inceleyelim.

SELECT
     ISNUMERIC('123') as '123'
    ,ISNUMERIC('abc') as 'abc'
    ,ISNUMERIC('-') as '-'
    ,ISNUMERIC('+') as '+'
    ,ISNUMERIC('$') as '$'
    ,ISNUMERIC('.') as '.'
    ,ISNUMERIC(',') as ','
    ,ISNUMERIC('\') as '\'

Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da ISNUMERIC Fonksiyonu Yerine TRY_PARSE Fonksiyonu Kullanmak

Yukarıdaki sonuca dikkat edersek ISNUMERIC fonksiyonu bazı karakterleri de sayısal olarak ele alır. Örneğin: – (eksi), + (artı), $ (dolar), \ (ters eğik çizgi).

Yukarıda “abc” değeri için “0” ve geri kalan sütun değerleri için “1” değerini döndürür. Aslında bu bir hatadır. Bu nedenle, ISNUMERIC fonksiyonunu kullanırken çok dikkatli olmamız ve T-SQL mantığınındaki olası tüm durumları göz önünde bulundurmamız gerekecektir.

Aynı işlemi TRY_PARSE fonksiyonunu kullanarak yapalım.

SELECT
     TRY_PARSE('123' as int) as '123'
    ,TRY_PARSE('abc' as int) as 'abc'
    ,TRY_PARSE('-' as int) as '-'
    ,TRY_PARSE('+' as int) as '+'
    ,TRY_PARSE('$' as int) as '$'
    ,TRY_PARSE('.' as int) as '.'
    ,TRY_PARSE(',' as int) as ','
    ,TRY_PARSE('\' as int) as '\'

Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da ISNUMERIC Fonksiyonu Yerine TRY_PARSE Fonksiyonu Kullanmak

Yukarıdaki sorgu, ilk sütun değerini sayısal olarak gösterir ve kalan değerler için NULL değerini döndürür.

Ayrıca TRY_PARSE fonksiyonu, doğrulama için diğer NUMERIC & DATETIME veri türleri ile birlikte de kullanılabilir.

SELECT
     TRY_PARSE('123' as int) as '123'
    ,TRY_PARSE('123.0' as float) as '123.0'
    ,TRY_PARSE('123.1' as decimal(4,1)) as '123.1'
    ,TRY_PARSE('$123.55' as money) as '$123.55'
    ,TRY_PARSE('2023/09/20' as datetime) as '2023/09/20'

Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da ISNUMERIC Fonksiyonu Yerine TRY_PARSE Fonksiyonu Kullanmak

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

180 Kez Okundu

Kategoriler: