Aracılığıyla paylaş


Skaler İşlev Çağrıları

Skaler işlevler her satır için bir değer döndürür. Örneğin, mutlak değer skaler işlevi bağımsız değişken olarak sayısal bir sütun alır ve sütundaki her değerin mutlak değerini döndürür. Skaler işlevi çağırmak için kaçış dizisi şudur:

{fnscalar-function}

burada skaler-işlevEk E: Skaler İşlevler'de listelenen işlevlerden biridir. Skaler işlev kaçış dizisi hakkında daha fazla bilgi için bkz. Ek C: SQL Dil Bilgisi'nde Skaler İşlev Kaçış Dizisi .

Örneğin, aşağıdaki SQL deyimleri büyük harf müşteri adlarının aynı sonuç kümesini oluşturur. İlk ifade kaçış dizimi kullanır. İkinci ifade, OS/2 için Ingres'in yerel söz dizimini kullanır ve uyumlu değildir.

SELECT {fn UCASE(Name)} FROM Customers  
  
SELECT uppercase(Name) FROM Customers  

Bir uygulama yerel söz dizimi kullanan skaler işlevlere çağrıları ve ODBC söz dizimi kullanan skaler işlevlere çağrıları karıştırabilir. Örneğin, Employee tablosundaki adların soyadı, virgül ve ad olarak depolandığını varsayalım. Aşağıdaki SQL deyimi, Çalışan tablosunda çalışanların soyadlarından oluşan bir sonuç kümesi oluşturur. deyimi, ODBC skaler işlevi SUBSTRING ve SQL Server skaler işlevi CHARINDEX'i kullanır ve yalnızca SQL Server'da doğru şekilde yürütülür.

SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers  

En yüksek birlikte çalışabilirlik için uygulamalar, bir skaler işlevin çıkışının gerekli tür olduğundan emin olmak için ÇEVİr skaler işlevini kullanmalıdır. CONVERT işlevi, verileri bir SQL veri türünden belirtilen SQL veri türüne dönüştürür. ÇEVİr işlevinin söz dizimi şudur:

DÖNÜŞTÜR(value_exp,data_type)

burada value_exp bir sütun adı, başka bir skaler işlevin sonucu veya değişmez değerdir ve data_type, Ek D: Veri Türleri'nde tanımlandığı gibi SQL veri türü tanımlayıcısı tarafından kullanılan #define adıyla eşleşen bir anahtar sözcüktür. Örneğin, aşağıdaki SQL deyimi, CURDATE işlevinin çıkışının zaman damgası veya karakter verileri yerine bir tarih olduğundan emin olmak için ÇEVİr işlevini kullanır:

INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)  
   VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)  

Bir veri kaynağı tarafından hangi skaler işlevlerin destekleneceğini belirlemek için, bir uygulama SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS ve SQL_TIMEDATE_FUNCTIONS seçenekleriyle SQLGetInfo çağırır. CONVERT işlevi tarafından hangi dönüştürme işlemlerinin desteklendiğini belirlemek için bir uygulama, SQL_CONVERT ile başlayan seçeneklerden herhangi biriyle SQLGetInfo çağırır.