5.7 Dönüşüm ve NULL fonksiyonları

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 5. Operatörler ve yerleşik fonksiyonlar >

5.7 Dönüşüm ve NULL fonksiyonları

İmzaNotlar
CAST(<ifade> AS <tip>)Bkz. 4.3.
COALESCE(v1, …)Gecikmeli değerlendirir; sonuç tipi birinci argümanın tipi.
NULLIF(a, b)13 tip; gecikmeli değerlendirir.
IIF(<koşul>, <doğruysa>, <değilse>)Gecikmeli değerlendirir; sonuç tipi ikinci argümanın tipi.
DECODE(a, b, c, …)Oracle biçimi; gecikmeli değerlendirir, sonuç tipi üçüncü argümanın tipi.
CASE …Hem basit hem aranan biçim; ifade ve deyim olarak.
Sınır

TRY_CAST yoktur: ne anahtar sözcüğü ne uygulaması vardır. CREATE CAST de yoktur.

5.7.1 SQL/JSON kurucuları

Bir JSON belgesi değerlerden JSON_ARRAY ve JSON_OBJECT ile kurulur; küme eşleri JSON_ARRAYAGG ve JSON_OBJECTAGG kümeleme fonksiyonlarındadır. Çağrı konumsaldır: standardın KEY … VALUE … yazımı yerine PostgreSQL, MySQL ve SQLite'ın json_build_object/json_build_array biçimi kullanılır. Belgeyi okuyan JSON_VALUE, JSON_QUERY ve JSON_EXISTS için bkz. 3.6.

İmzaNotlar
JSON_ARRAY([v1, …])Sonuç json. NULL argüman diziye girmez (ABSENT ON NULL).
JSON_OBJECT([k1, v1, …])Sonuç json. NULL değer null olarak yazılır (NULL ON NULL); anahtar NULL olamaz, argüman sayısı çift olmalıdır. Sonuç kanoniktir: anahtarlar sıralanır, yinelenen anahtarın sonuncusu kalır.

Bildirilen tipi json olan bir argüman tırnaklanmaz, belge olarak gömülür; iç içe belge böyle kurulur. JSON gibi görünen bir metin ise dizgedir ve tırnaklanır.

select json_array(1, 'x', true);                          --> [1,"x",true]
select json_array(1, null, 2);                            --> [1,2]
select json_object('a', 1, 'b', null, 'c', 'x');          --> {"a":1,"b":null,"c":"x"}
select json_object('a', json_array(1, 2), 'b', json_object('c', 3));
                                                          --> {"a":[1,2],"b":{"c":3}}
select json_array('[1,2]');                               --> ["[1,2]"]

5.7.2 Yükseltme durumu fonksiyonları

Ürün kodu (özellikle tetikleyiciler) motorun yarı yükseltilmiş bir veritabanında koştuğunu bu fonksiyonlardan öğrenir (yükseltme için bkz. 6.9):

İmzaNotlar
IS_UPGRADING()boolean: bir katalog yükseltmesi sürüyor mu.
IS_INSTALLING_LEVEL([seviye])boolean: parametresiz herhangi bir seviye, parametreli o seviye kuruluyor mu.
IVD_DATABASE_STATE(kart guid)Kimlik kartı bu GUID'i taşıyan bağlı veritabanının canlı durumu (string); bağlı değilse NULL.
IVD_UPGRADE_REASON(kart guid)Yükseltme gerekçesi (string); gerekmiyorsa NULL.
create trigger ayar_ai for ayar after insert as
begin
  insert into ayar_iz (tablo, kod, durum)
    values ('AYAR', new.kod,
            case when is_installing_level(3) then 'L3' when is_upgrading() then 'UPG' else 'YOK' end);
end;