Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Veri türü dönüşümü

Son Güncelleme:Oct 10, 2026

MaxCompute SQL, farklı veri türleri arasında dönüşüm yapılmasına olanak tanır. Bu dönüşümler açık veya örtük olabilir.

Açık dönüşüm

Açık dönüşüm, bir değeri bir veri türünden diğerine dönüştürmek için CAST işlevini kullanır. Aşağıdaki tabloda MaxCompute SQL tarafından desteklenen açık dönüşümler gösterilmektedir. Bu işlev hakkında daha fazla bilgi için bkz. CAST.


From/to


BIGINT


DOUBLE


STRING


DATETIME


BOOLEAN


DECIMAL


FLOAT


BIGINT


N/A


Y


Y


N


Y


Y


Y


DOUBLE


Y


N/A


Y


N


Y


Y


Y


STRING


Y


Y


N/A


Y


Y


Y


Y


DATETIME


N


N


Y


N/A


N


N


N


BOOLEAN


Y


Y


Y


N


N/A


Y


Y


DECIMAL


Y


Y


Y


N


Y


N/A


Y


FLOAT


Y


Y


Y


N


Y


Y


N/A

Bu tabloda Y dönüşümün desteklendiğini, N desteklenmediğini ve N/A dönüşüm gerekmediğini belirtir. Desteklenmeyen bir açık dönüşüm yapmaya çalışmak hata döndürür.

  • Örnek veriler

    Not

    Aşağıdaki örneklerde bu örnek verileri içeren bir user tablosu kullanılmaktadır.

    create table if not exists user (
      user_name string,
    	user_id bigint,
    	age bigint   
    );
    insert into user values ('zhangsan',111,20);
  • Örnekler

    SELECT CAST(user_id AS DOUBLE) AS new_id from user;
    SELECT CAST('2015-10-01 00:00:00' AS DATETIME) AS new_date;
    SELECT CAST(ARRAY(1,2,3) AS ARRAY<STRING>);
    SELECT CONCAT_WS(',', CAST(ARRAY(1, 2) AS ARRAY<STRING>));

Kullanım notları ve sınırlamalar

  • Bir DOUBLE türünü BIGINT türüne dönüştürdüğünüzde ondalık kısım kırpılır. Örneğin, CAST(1.6 AS BIGINT) = 1.

  • DOUBLE biçimindeki bir STRING'i BIGINT'e dönüştürdüğünüzde değer önce DOUBLE'a ardından BIGINT'e dönüştürülür ve ondalık kısım kırpılır. Örneğin, CAST("1.6" AS BIGINT) = 1.

  • BIGINT biçimindeki bir STRING'i DOUBLE'a dönüştürebilirsiniz. Sonuçta bir ondalık basamak bulunur. Örneğin, CAST("1" AS DOUBLE) = 1.0.

  • DATETIME türüne yapılan dönüşümler varsayılan olarak yyyy-mm-dd hh:mi:ss biçimini kullanır.

  • Doğrudan açık dönüşümü desteklemeyen bazı veri türlerini dönüştürmek için yerleşik işlevleri kullanabilirsiniz. Örneğin, bir BOOLEAN değerini STRING'e dönüştürmek için TO_CHAR işlevini kullanabilirsiniz. Daha fazla bilgi için bkz. TO_CHAR. TO_DATE işlevi ayrıca bir STRING değerini DATETIME'e dönüştürmeyi de destekler. Daha fazla bilgi için bkz. TO_DATE.

  • Bir DECIMAL'in değer aralığı aşılırsa CAST STRING TO DECIMAL işlemi taşma hatası veya veri kırpılması gibi sorunlara neden olabilir.

  • Bir DECIMAL'i DOUBLE veya FLOAT'a açıkça dönüştürmek hassasiyet kaybına yol açabilir. Para birimi hesaplamaları gibi yüksek hassasiyet gerektiren senaryolar için DECIMAL türünü kullanmanızı öneririz.

  • MaxCompute karmaşık veri türleri için tür dönüşümlerini destekler. Hem örtük hem de açık dönüşümlerde karmaşık bir türün alt türlerinin de dönüştürülebilir olması gerekir. Bir STRUCT'u dönüştürürken alan adlarının eşleşmesi gerekmez ancak alan sayısı aynı olmalı ve karşılık gelen alanlar örtük veya açık olarak dönüştürülebilir olmalıdır. Örnekler:

    • ARRAY<BIGINT> örtük veya açık olarak ARRAY<STRING> türüne dönüştürülebilir.

    • ARRAY<BIGINT> açık olarak ARRAY<INT> türüne dönüştürülebilir ancak örtük olarak dönüştürülemez.

    • ARRAY<BIGINT> örtük veya açık olarak ARRAY<DATETIME> türüne dönüştürülemez.

    • STRUCT<a:BIGINT,b:INT> örtük olarak STRUCT<col1:STRING,col2:BIGINT> türüne dönüştürülebilir ancak STRUCT<a:STRING> türüne örtük veya açık olarak dönüştürülemez.

Örtük dönüşüm ve kapsamı

Örtük dönüşüm, MaxCompute'un bağlama ve dönüşüm kurallarına göre çalışma zamanında otomatik olarak yaptığı bir tür dönüşümüdür. Aşağıdaki tablolarda MaxCompute'un desteklediği örtük dönüşümler gösterilmektedir.


From/To


BOOLEAN


TINYINT


SMALLINT


INT


BIGINT


FLOAT


BOOLEAN


N/A


N


N


N


N


N


TINYINT


N


N/A


Y


Y


Y


Y


SMALLINT


N


N


N/A


Y


Y


Y


INT


N


N


Y


N/A


Y


Y


BIGINT


N


N


N


N


N/A


Y


FLOAT


N


N


N


N


Y


N/A


From/to


DOUBLE


DECIMAL


STRING


VARCHAR


TIMESTAMP


BINARY


DOUBLE


N/A


Y


Y


Y


N


N


DECIMAL


N


N/A


Y


Y


N


N


STRING


Y


Y


N/A


Y


N


N


VARCHAR


Y


Y


Y


N/A


N


N


TIMESTAMP


N


N


Y


Y


N/A


N


BINARY


N


N


N


N


N


N/A

Bu tablolarda Y dönüşümün desteklendiğini, N desteklenmediğini ve N/A dönüşüm gerekmediğini belirtir. MaxCompute, desteklenmeyen bir örtük dönüşüm veya çalışma zamanında başarısız olan bir dönüşüm için hata döndürür.

Not
  • MaxCompute 2.0, DECIMAL ve DATETIME türleri için sabit tanımları sunar. Örneğin, 100BD değeri 100 olan bir DECIMAL sabitidir ve 2017-11-11 00:00:00 bir DATETIME sabitidir. Bu sabitleri VALUES yan tümcelerinde ve tablolarda doğrudan kullanabilirsiniz.

  • MaxCompute örtük dönüşümleri bağlama göre otomatik olarak yaptığından veri türleri eşleşmediğinde açık dönüşümler için CAST kullanmanızı öneririz.

  • Örtük dönüşüm kuralları yalnızca belirli bir kapsam içinde etkilidir. Bazı kapsamlarda bu kuralların yalnızca bir alt kümesi uygulanabilir.

Örnek

SELECT user_id+age+'12345', CONCAT(user_name,user_id,age) FROM user;

Örtük dönüşüm kuralları operatöre bağlı olarak değişir:

  • İlişkisel operatörlerle örtük dönüşüm

    İlişkisel operatörler şunlardır: =, <>, <, <=, >, >=, IS NULL, IS NOT NULL, LIKE, RLIKE, and IN. LIKE, RLIKE, and IN için örtük dönüşüm kuralları diğer ilişkisel operatörlerden farklıdır ve ayrı olarak açıklanmıştır. Bu bölümdeki kurallar bu üç operatör için geçerli değildir.

    Bir ilişkisel işlemde farklı veri türleri söz konusu olduğunda bunlar aşağıdaki kurallara göre örtük olarak dönüştürülür.


    From/to


    BIGINT


    DOUBLE


    STRING


    DATETIME


    BOOLEAN


    DECIMAL


    BIGINT


    N/A


    DOUBLE


    DOUBLE


    N


    N


    DECIMAL


    DOUBLE


    DOUBLE


    N/A


    DOUBLE


    N


    N


    DECIMAL


    STRING


    DOUBLE


    DOUBLE


    N/A


    DATETIME


    N


    DECIMAL


    DATETIME


    N


    N


    DATETIME


    N/A


    N


    N


    BOOLEAN


    N


    N


    N


    N


    N/A


    N


    DECIMAL


    DECIMAL


    DECIMAL


    DECIMAL


    N


    N


    N/A

    Not
    • Karşılaştırılan iki veri türü örtük olarak dönüştürülemiyorsa ilişkisel işlem başarısız olur ve hata döndürür.

    • İlişkisel operatörler hakkında daha fazla bilgi için bkz. Operators.

  • Özel ilişkisel operatörlerle örtük dönüşüm

    Özel ilişkisel operatörler şunlardır: LIKE, RLIKE, and IN.

    • LIKE ve RLIKE sözdizimi şu şekildedir:

      source LIKE pattern;  
      source RLIKE pattern;
      Not
      • LIKE ve RLIKE için source ve pattern parametreleri STRING türünde olmalıdır.

      • Diğer veri türlerine izin verilmez ve bu işlem için örtük olarak STRING'e dönüştürülmez.

    • IN sözdizimi şu şekildedir:

      key IN (value1, value2, …)
      Not
      • Bir IN ifadesinde değer listesindeki tüm değerler aynı veri türünde olmalıdır.

      • Anahtar değerlerle karşılaştırıldığında türler BIGINT, DOUBLE ve STRING içeriyorsa hepsini DOUBLE'a dönüştürmenizi öneririz. Türler DATETIME ve STRING içeriyorsa hepsini DATETIME'e dönüştürmenizi öneririz. Başka tür dönüşümlerine izin verilmez.

  • Aritmetik operatörlerle örtük dönüşüm

    Aritmetik operatörler şunlardır: +, -, *, /, and %. Bunların örtük dönüşüm kuralları şöyledir:

    • Aritmetik işlemlerde yalnızca STRING, BIGINT, DOUBLE ve DECIMAL türleri kullanılabilir.

    • STRING değerler işlem öncesi örtük olarak DOUBLE'a dönüştürülür.

    • BIGINT, DOUBLE ile yapılan hesaplamalarda örtük olarak DOUBLE'a dönüştürülür.

    • DATETIME ve BOOLEAN türleri aritmetik işlemlerde kullanılamaz.

  • Mantıksal operatörlerle örtük dönüşüm

    Mantıksal operatörler şunlardır: and, or, and not. Bunların örtük dönüşüm kuralları şöyledir:

    • Mantıksal işlemlerde yalnızca BOOLEAN değerler kullanılabilir.

    • Diğer veri türleri mantıksal işlemlerde kullanılamaz ve bu amaçla örtük olarak dönüştürülemez.

Yerleşik işlevlerde örtük dönüşüm

MaxCompute SQL, herhangi bir satırdaki bir veya daha fazla sütun üzerinde hesaplama yapmak ve çeşitli veri türleri döndürmek için geniş bir yerleşik işlev yelpazesi sağlar. Bunların örtük dönüşüm kuralları şöyledir:

  • Bir işlevi çağırdığınızda bir giriş parametresinin veri türü o parametre için tanımlanan türle eşleşmiyorsa parametre gerekli türe örtük olarak dönüştürülür.

  • MaxCompute SQL'deki her yerleşik işlev için örtük dönüşüm kuralları farklıdır .

CASE WHEN ifadelerinde örtük dönüşüm

CASE WHEN ifadeleri hakkında daha fazla bilgi için bkz. CASE WHEN expression. Örtük dönüşüm kuralları şöyledir:

  • Dönüş türleri yalnızca BIGINT ve DOUBLE içeriyorsa tümü DOUBLE'a dönüştürülür.

  • Olası herhangi bir dönüş değeri STRING ise tüm dönüş değerleri STRING'e dönüştürülür. BOOLEAN gibi dönüştürülemeyen bir tür varsa hata döndürülür.

  • Başka tür dönüşümlerine izin verilmez.

STRING ve DATETIME dönüşümü

MaxCompute, STRING ve DATETIME türleri arasında dönüşümleri destekler. Bu dönüşümler için yyyy-mm-dd hh:mi:ss biçimi kullanılır.


Unit


Format string


Value range


Year


yyyy


0001-9999


Month


mm


01-12


Day


dd


01-28|29|30|31


Hour


hh


00-23


Minute


mi


00-59


Second


ss


00-59

Not
  • Bir birim değeri tek basamaklıysa baştaki sıfır atlanamaz. Örneğin, 2014-1-9 12:12:12 geçersiz bir DATETIME biçimidir ve STRING'den DATETIME'e dönüştürülemez. Bunu 2014-01-09 12:12:12 şeklinde yazmalısınız.

  • Bir STRING yalnızca dize yukarıda açıklanan biçimle eşleşiyorsa DATETIME'e dönüştürülebilir. Örneğin, CAST("2013-12-31 02:34:34" AS DATETIME) ifadesi 2013-12-31 02:34:34 STRING'ini DATETIME türüne dönüştürür. Benzer şekilde, bir DATETIME değeri STRING'e dönüştürüldüğünde varsayılan olarak yyyy-mm-dd hh:mi:ss biçimini kullanır.

MaxCompute, varsayılan tarih biçimiyle eşleşmeyen STRING değerlerini DATETIME türüne dönüştürmenize olanak tanıyan TO_DATE işlevini sağlar. Daha fazla bilgi için bkz. TO_DATE.