Tüm Ürünler
Search
Belge Merkezi

MaxCompute:DECODE

Son Güncelleme:Oct 04, 2026

DECODE işlevi, sağlanan parametrelere bağlı olarak iki farklı amaçla kullanılır. Bu işlev, IF-THEN-ELSE koşullu dallanma yapısı olarak veya belirli bir kodlama biçimindeki bir dizenin çözümlemesi için kullanılabilir. Bu konuda her iki kullanım durumu için sözdizimi açıklanmakta ve örnekler sunulmaktadır.

IF-THEN-ELSE dal seçimi

Sözdizimi

DECODE(<expression>, <search>, <result>[, <search>, <result>]...[, <default>])

Parametreler


Parametre


Zorunlu


Açıklama


expression


Evet


Karşılaştırılacak ifade.


search


Evet

expression ile karşılaştırılacak arama öğesi.


result


Evet

search ve expression eşleştiğinde döndürülecek değer.


default


Hayır


Herhangi bir arama öğesi eşleşmezse varsayılan değer döndürülür. default belirtilmezse NULL döndürülür.

Not
  • Tüm result değerleri aynı veri türünde olmalı veya NULL olmalıdır. Veri türleri tutarsızsa hata döndürülür.

  • expression ve tüm search değerleri aynı veri türünde olmalıdır. Aksi takdirde hata döndürülür.

Dönüş değeri

  • Eşleşme bulunursa ilgili result değeri döndürülür.

  • Eşleşme bulunmazsa default değeri döndürülür.

  • default belirtilmemişse NULL döndürülür.

  • Birden fazla search seçeneğinde eşleşen bir değer varsa ilk oluşuma ait sonuç döndürülür.

  • MaxCompute SQL genellikle NULL=NULL ifadesini değerlendirirken NULL döndürür. Ancak DECODE işlevi NULL değerini NULL'a eşit kabul eder.

Örnek

sale_detail adlı tablo; shop_name string, customer_id string ve total_price double alanlarını içerir. Tablo aşağıdaki verileri içermektedir:

+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

Aşağıdaki komut bir örnektir.

-- If customer_id is 'c1', return 'Taobao'. If it is 'c2', return 'Alipay'. If it is 'c3', return 'Aliyun'. If it is NULL, return 'N/A'. Otherwise, return 'Others'.
SELECT DECODE(customer_id, 'c1', 'Taobao', 'c2', 'Alipay', 'c3', 'Aliyun', Null, 'N/A', 'Others') AS RESULT FROM sale_detail;

-- This is equivalent to the following statement.
IF customer_id = c1 THEN RESULT := 'Taobao';
ELSEIF customer_id = c2 THEN RESULT := 'Alipay';
ELSEIF customer_id = c3 THEN RESULT := 'Aliyun';  ...
ELSE RESULT := 'Others';
END IF;

Aşağıdaki sonuç döndürülür:

+------------+
| result     | 
+------------+
| Others     | 
| Others     | 
| Others     | 
| Taobao     | 
| Alipay     | 
| Aliyun     | 
+------------+

Belirtilen biçimden bir dizeyi çözümleme

Sözdizimi

STRING DECODE(BINARY <str>, STRING <charset>)

Parametreler

Parametre

Zorunlu

Açıklama

str

Evet

BINARY türü. Çözümlemek istediğiniz dize.

charset

Evet

STRING türü. Kodlama biçimi. Geçerli değerler: UTF-8, UTF-16, UTF-16LE, UTF-16BE, ISO-8859-1 ve US-ASCII.

Not

ISO-8859-1 ve US-ASCII kodlama biçimleri yalnızca İngilizce karakterlerin kodlamasını ve çözümlemesini destekler. Çince karakterler desteklenmez.

Dönüş değeri

STRING türünde bir değer döndürür. str veya charset NULL ise işlev NULL döndürür.

Örnekler

  • Örnek 1: Aşağıdaki komut "Chinese sample" dizesini UTF-8 biçiminde kodlar.

    -- Encode and decode
    SELECT DECODE(ENCODE("Chinese sample","UTF-8"), "UTF-8");

    Aşağıdaki sonuç döndürülür:

    +-----+
    | _c0 |
    +-----+
    | Chinese sample |
    +-----+
  • Örnek 2: Giriş parametresi NULL'dur. Aşağıdaki komutu çalıştırın:

    SELECT DECODE(ENCODE("Chinese sample","UTF-8"), NULL);

    Aşağıdaki sonuç döndürülür:

    +-----+
    | _c0 |
    +-----+
    | NULL |
    +-----+

İlgili işlevler

DECODE işlevi hem çeşitli işlevler hem de dize işlevleri kategorisinde sınıflandırılır. Diğer çeşitli işlevler hakkında daha fazla bilgi için bkz. Diğer işlevler. Diğer dize işlevleri hakkında daha fazla bilgi için bkz. Dize işlevleri.