cast işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Değeri expr hedef veri türüne dönüştürür type. Bu işleç, :: (iki nokta üst üste işareti) işleci için bir eş anlamlıdır

Söz dizimi

cast(sourceExpr AS targetType)

Bağımsız değişkenler

  • sourceExpr: Herhangi bir yayınlanabilir ifade.
  • targetType: Sonucun veri türü.

Döndürülenler

Sonuç türüdür targetType.

Veri türü atamasının aşağıdaki birleşimleri geçerlidir:

Kaynak (satır) Hedef(sütun) VOİD Sayısal DİZE DATE TIMESTAMP TIMESTAMP_NTZ yıl-ay aralığı gün-saat aralığı BOOLEAN IKİLİ DİZİ HARİTA YAPI
VOİD Y Y Y Y Y Y Y Y Y Y Y Y Y
Sayısal N Y Y N Y N Y Y Y N N N N
DİZE N Y Y Y Y Y Y Y Y Y N N N
DATE N N Y Y Y Y N N N N N N N
TIMESTAMP N Y Y Y Y Y N N N N N N N
TIMESTAMP_NTZ N N Y Y Y Y N N N N N N N
yıl-ay aralığı N Y Y N N N Y N N N N N N
gün-saat aralığı N Y Y N N N N Y N N N N N
BOOLEAN N Y Y N Y N N N Y N N N N
IKİLİ N Y Y N N N N N N Y N N N
DİZİ N N Y N N N N N N N Y N N
HARİTA N N Y N N N N N N N N Y N
YAPI N N Y N N N N N N N N N Y

targetType'a dayalı kurallar ve sınırlamalar

Uyarı

Databricks Runtime'da, spark.sql.ansi.enabled ise false, taşma bir hataya neden olmaz, bunun yerine sonucu "sarmalar".

sourceExpr Geçersiz biçime veya geçersiz karakterlere targetType sahip bir değer ile sonuçlanırNULL.

sayısal

targetType sayısal ise ve sourceExpr türündeyse:

  • VOİD

    Sonuç, belirtilen sayısal türün NULL değeridir.

  • Sayısal

    Tamsayı sayısalsatargetType, sonuç sourceExprtamsayıya yuvarlanır.

    Aksi takdirde, sonuç sourceExprkullanılabilir ölçeğine targetTypeuyacak şekilde yuvarlanr.

    Değer aralığının targetTypedışındaysa bir taşma hatası oluşur.

    Taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • DİZE

    sourceExpr değerinin targetTypedeğişmez değeri olarak okunur.

    Değişmez değerlerin biçimiyle uyumlu değilse sourceExpr bir hata oluşur.

    Değer aralığının targetTypedışındaysa bir taşma hatası oluşur.

    Taşma ve geçersiz biçim hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • TIMESTAMP

    Sonuç, ile sourceExprarasında 1970-01-01 00:00:00 UTC geçen saniye sayısıdır.

    Tamsayı sayısalsatargetType, sonuç tamsayıya yuvarlanır.

    Aksi takdirde, sonuç kullanılabilir ölçeğine targetTypeuyacak şekilde yuvarlanr.

    Sonuç aralığının targetTypedışındaysa taşma hatası oluşur.

    Taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • ARALIĞI

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    Hedef türü tam bir sayısal olmalıdır.

    INTERVAL upper_unit TO lower_unit Verilen sonuç, toplam sayısıyla lower_unitölçülür. lower_unit iseSECOND, kesirli saniyeler ondalık ayırıcının sağ kısmında depolanır. Diğer tüm aralıklar için sonuç her zaman tam sayıdır.

  • BOOLEAN

    Şu durumdaysa sourceExpr :

    • true: Sonuç 0'dır.
    • false: Sonuç 1'dir.
    • NULL: Sonuç olarak elde edilir NULL.

Örnekler

> SELECT cast(NULL AS INT);
  NULL

> SELECT cast(5.6 AS INT);
  5

> SELECT cast(5.6 AS DECIMAL(2, 0));
  6

> SELECT cast(-5.6 AS INT);
  -5

> SELECT cast(-5.6 AS DECIMAL(2, 0));
  -6

> SELECT cast(128 AS TINYINT);
  Overflow

> SELECT cast(128 AS DECIMAL(2, 0));
  Overflow

> SELECT cast('123' AS INT);
  123

> SELECT cast('123.0' AS INT);
  Invalid format

> SELECT cast(TIMESTAMP'1970-01-01 00:00:01' AS LONG);
  1

> SELECT cast(TIMESTAMP'1970-01-01 00:00:00.000001' AS DOUBLE);
  1.0E-6

> SELECT cast(TIMESTAMP'2022-02-01 00:00:00' AS SMALLINT);
  error: overflow
> SELECT cast(true AS BOOLEAN);
  1

> SELECT cast(INTERVAL '1-2' YEAR TO MONTH AS INTEGER);
  14

> SELECT cast(INTERVAL '1:30.5' MINUTE TO SECOND AS DECIMAL(5, 2));
  90.50

> SELECT cast(TRUE AS INT);
  1

> SELECT cast(FALSE AS INT);
  0

DİZE

targetTypedize türündeyse ve sourceExpr türündeyse:

  • VOİD

    Sonuç bir NULL dizedir.

  • tam sayısal

    Sonuç, isteğe bağlı eksi işareti olan ve ondalık ayırıcının solundaki tek basamak dışında önünde sıfır olmayan sabit sayıdır. targetTypeDECIMAL(p, s) değeri 0'ın s üzerine çıkarsa, ondalık ayırıcı eklenir ve sonundaki sıfırlar ölçeklendirilecek şekilde eklenir.

  • kayan nokta ikili

    Mutlak sayı bundan küçükse ve değerinden 10,000,000 büyük veya eşitse 0.001, sonuç ondalık ayırıcının her iki tarafında en az bir basamakla bilimsel gösterim olmadan ifade edilir.

    Aksi takdirde, Azure Databricks bir mantis ve ardından E bir üs kullanır. Mantiste, ondalık noktasının solunda bir basamak ve sağda sıfırdan büyük en az basamak sayısı isteğe bağlı bir baştaki eksi işareti vardır. Üs, isteğe bağlı baştaki eksi işaretine sahiptir.

  • DATE

    Yıl 9999 BCE ile 9999 CE arasındaysa, sonuç formun -YYYY-MM-DD ve YYYY-MM-DD sırasıyla dateString değeridir.

    Bu aralık öncesinde veya sonrasında yıllar boyunca, yıl bileşenine gerekli basamak sayısı eklenir ve + CE için kullanılır.

  • TIMESTAMP

    Yıl 9999 BCE ile 9999 CE arasındaysa, sonuç formun -YYYY-MM-DD hh:mm:ss ve YYYY-MM-DD hh:mm:ss sırasıyla zaman damgasıString'idir.

    Bu aralık öncesinde veya sonrasında yıllar boyunca, yıl bileşenine gerekli basamak sayısı eklenir ve + CE için kullanılır.

    Gerekirse kesirli saniyeler .f... eklenir.

  • TIMESTAMP_NTZ

    Yıl 9999 BCE ile 9999 CE arasındaysa, sonuç formun -YYYY-MM-DD hh:mm:ss ve YYYY-MM-DD hh:mm:ss sırasıyla zaman damgasıString'idir.

    Bu aralık öncesinde veya sonrasında yıllar boyunca, yıl bileşenine gerekli basamak sayısı eklenir ve + CE için kullanılır.

    Gerekirse kesirli saniyeler .f... eklenir.

  • yıl-ay aralığı

    Sonuç, aralık değişmez değeri en kısa gösterimidir. Aralık negatifse, işareti içine interval-stringeklenir. 10'dan küçük birimler için baştaki sıfırlar atlanır.

    Tipik bir yıl-ay aralığı dizesi şu forma sahiptir:

    • INTERVAL 'Y' YEAR
    • INTERVAL 'Y-M' YEAR TO MONTH
    • INTERVAL 'M' MONTH
  • gün-saat aralığı

    Sonuç, aralık değişmez değeri en kısa gösterimidir. Aralık negatifse, işareti içine interval-stringeklenir. 10'dan küçük birimler için baştaki sıfırlar atlanır.

    Tipik bir gün zaman aralığı dizesi şu forma sahiptir:

    • INTERVAL 'D' DAY
    • INTERVAL 'D h' DAY TO HOUR
    • INTERVAL 'D h:m' DAY TO MINUTE
    • INTERVAL 'D h:m:s' DAY TO SECOND
    • INTERVAL 'h' HOUR
    • INTERVAL 'h:m' HOUR TO MINUTE
    • INTERVAL 'm:s' MINUTE TO SECOND
    • INTERVAL 's' SECOND
  • BOOLEAN

    Boole değerinin true sonucu STRING değişmez değeridir true. Bunun nedeni false STRING değişmez değeridir falseve NULL null dizedir.

  • IKİLİ

    Sonuç, ikilinin sourceExpr UTF-8 karakter dizisi olarak yorumlanmış olmasıdır.

    Azure Databricks UTF-8 karakterlerini doğrulamaz. 'den BINARYSTRING atama, hiçbir zaman değiştirme karakterleri eklemez veya hata oluşturmaz.

  • DİZİ

    Sonuç, köşeli ayraçlarla [ ]ayrılmış bir virgülle ayrılmış atama öğeleri listesidir. Her virgülden bir boşluk takip eder. Bir NULL öğe değişmez değere nullçevrilir.

    Azure Databricks, köşeli ayraç veya virgül içerebilen tek tek öğeleri alıntılamaz veya başka bir şekilde işaretlemez.

  • HARİTA

    Sonuç, küme ayraçları ile ayrılmış olan atama anahtarı değer çiftlerinin { }virgülle ayrılmış bir listesidir. Her virgülden bir boşluk takip eder. Her anahtar değer çifti ile ->ayrılır. Bir NULL eşleme değeri değişmez değerine nullçevrilir.

    Azure Databricks, küme ayracı, virgül veya içerebilecek tek tek anahtarları veya değerleri tırnak içine almaz veya ->işaretlemez.

  • YAPI

    Sonuç, küme ayracı { }ile küme ayraçları ile ayrılmış, atama alanı değerlerinin virgülle ayrılmış bir listesidir. Her virgülden bir boşluk takip eder. Alan NULL değeri değişmez nulldeğere çevrilir.

    Azure Databricks, küme ayraçları veya virgül içerebilen tek tek alan değerlerini tırnak içine almaz veya başka bir şekilde işaretlemez.

Örnekler

> SELECT cast(NULL AS STRING);
  NULL

> SELECT cast(-3Y AS STRING);
  -3

> SELECT cast(5::DECIMAL(10, 5) AS STRING);
  5.00000

> SELECT cast(12345678e-4 AS STRING);
  1234.5678

> SELECT cast(1e7 as string);
  1.0E7

> SELECT cast(1e6 as string);
  1000000.0

> SELECT cast(1e-4 as string);
  1.0E-4

> SELECT cast(1e-3 as string);
  0.001

> SELECT cast(12345678e7 AS STRING);
  1.2345678E14

> SELECT cast(DATE'1900-12-31' AS STRING);
  1900-12-31

-- Caesar no more
> SELECT cast(DATE'-0044-03-15' AS STRING);
  -0044-03-15

> SELECT cast(DATE'100000-12-31' AS STRING);
  +100000-12-31

> SELECT cast(current_timestamp() AS STRING);
  2022-04-02 22:29:09.783

> SELECT cast(TIMESTAMP_NTZ'2023-01-01' AS STRING);
  2023-01-01 00:00:00

> SELECT cast(INTERVAL -'13-02' YEAR TO MONTH AS STRING);
  INTERVAL '-13-2' YEAR TO MONTH

> SELECT cast(INTERVAL '12:04.9900' MINUTE TO SECOND AS STRING);
  INTERVAL '12:04.99' MINUTE TO SECOND

> SELECT cast(true AS STRING);
  true

> SELECT cast(false AS STRING);
  false

-- A bad UTF-8 string
> SELECT cast(x'33800033' AS STRING);
  3�3

> SELECT hex(cast(x'33800033' AS STRING));
  33800033

> SELECT cast(array('hello', NULL, 'world') AS STRING);
  [hello, null, world]

> SELECT cast(array('hello', 'wor, ld') AS STRING);
  [hello, wor, ld]

> SELECT cast(array() AS STRING);
  []

> SELECT cast(map('hello', 1, 'world', null) AS STRING);
  {hello -> 1, world -> null}

> SELECT cast(map('hello -> 1', DATE'2022-01-01') AS STRING);
  {hello -> 1 -> 2022-01-01}

> SELECT cast(map() AS STRING);
  {}

> SELECT cast(named_struct('a', 5, 'b', 6, 'c', NULL) AS STRING);
  {5, 6, null}

> SELECT cast(named_struct() AS STRING);
  {}

DATE

targetTypedate türündeyse ve sourceExpr türündeyse:

  • VOİD

    Sonuç NULL TARİhtir.

  • DİZE

    sourceExpr geçerli bir dateString olmalıdır.

    sourceExpr Geçerli dateStringbir değilse, Azure Databricks bir hata döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • TIMESTAMP

    Sonuç, zaman damgasının sourceExprtarih bölümüdür.

  • TIMESTAMP_NTZ

    Sonuç, timestamp_ntz sourceExprtarih bölümüdür.

Örnekler

> SELECT cast(NULL AS DATE);
  NULL

> SELECT cast('1900-10-01' AS DATE);
  1900-10-01

> SELECT cast('1900-10-01' AS DATE);
  1900-10-01

-- There is no February 30.
> SELECT cast('1900-02-30' AS DATE);
  Error

> SELECT cast(TIMESTAMP'1900-10-01 12:13:14' AS DATE);
  1900-10-01

> SELECT cast(TIMESTAMP_NTZ'1900-10-01 12:13:14' AS DATE);
  1900-10-01

TIMESTAMP

targetTypetimestamp türündeyse ve sourceExpr türündeyse:

  • VOİD

    Sonuç NULL TARİhtir.

  • Sayısal

    sourceExpr , tarihinden bu yana 1970-01-01 00:00:00 UTCsaniye sayısı olarak okunur.

    Mikrosaniyeden küçük kesirler kesilir.

    Değer aralığının TIMESTAMPdışındaysa bir taşma hatası oluşur.

    Taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • DİZE

    sourceExpr geçerli bir timestampString olmalıdır.

    sourceExpr Geçerli timestampStringbir değilse, Azure Databricks bir hata döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • DATE

    Sonuç, hrs'deki sourceExpr00:00:00TARİh'tir.

  • TIMESTAMP_NTZ

Sonuç, timestamp_ntz aynı yıl/ay/gün/saat/dakika/saniye alanlarına sahip bir zaman damgası değeridir sourceExpr.

Örnekler

> SELECT cast(NULL AS TIMESTAMP);
  NULL

> SET TIME ZONE '+00:00';
> SELECT cast(0.0 AS TIMESTAMP);
  1970-01-01 00:00:00

> SELECT cast(0.0000009 AS TIMESTAMP);
  1970-01-01 00:00:00

> SELECT cast(1e20 AS TIMESTAMP);
  Error: overflow

> SELECT cast('1900' AS TIMESTAMP);
  1900-01-01 00:00:00

> SELECT cast('1900-10-01 12:13:14' AS TIMESTAMP);
  1900-10-01 12:13:14

> SELECT cast('1900-02-30 12:13:14' AS TIMESTAMP);
  Error

> SELECT cast(DATE'1900-10-01' AS TIMESTAMP);
  1900-10-01 00:00:00

> SELECT cast(TIMESTAMP_NTZ'2023-01-01 02:03:04.567' as TIMESTAMP)
  2023-01-01 02:03:04.567

TIMESTAMP_NTZ

targetType TIMESTAMP_NTZ türündeyse ve sourceExpr türündeyse:

  • VOİD

    Sonuç NULL TARİhtir.

  • DİZE

    sourceExpr geçerli bir timestampString olmalıdır.

    sourceExpr Geçerli timestampStringbir değilse, Azure Databricks bir hata döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • DATE

    Sonuç, hrs'deki sourceExpr00:00:00TARİh'tir.

  • TIMESTAMP

Sonuç, oturum saat dilimindeki yerel saattir sourceExpr .

Örnekler

> SELECT cast(NULL AS TIMESTAMP_NTZ);
  NULL

> SELECT cast('1900' AS TIMESTAMP_NTZ);
  1900-01-01 00:00:00

> SELECT cast('1900-10-01 12:13:14' AS TIMESTAMP_NTZ);
  1900-10-01 12:13:14

> SELECT cast('1900-02-30 12:13:14' AS TIMESTAMP_NTZ);
  Error

> SELECT cast(DATE'1900-10-01' AS TIMESTAMP_NTZ);
  1900-10-01 00:00:00

> SELECT current_timezone(), CAST(TIMESTAMP'2021-7-1T8:43:28' as TIMESTAMP_NTZ);
  America/Los_Angeles 2021-07-01 08:43:28

> SELECT current_timezone(), CAST(TIMESTAMP'2021-7-1T8:43:28UTC+3' as TIMESTAMP_NTZ);
  America/Los_Angeles 2021-06-30 22:43:28

yıl-ay aralığı

targetType yıl-ay aralığıysa ve sourceExpr türündeyse:

  • VOİD

    Sonuç, null yıl-ay aralığıdır.

  • integral_numeric

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    Sayısal, yearmonthIntervalQualifier'ın targetTypedaha düşük birim sayısı olarak yorumlanır.

  • DİZE

    sourceExpr geçerli bir yearMonthIntervalString olmalıdır.

    sourceExpr Geçerli yearMonthIntervalStringbir değilse, Azure Databricks bir hata döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • yıl-ay aralığı

    targetTypeyearMonthIntervalQualifier değeri içeriyorsa MONTH değer değişmeden kalır, ancak hedef türle eşleşecek şekilde yeniden yorumlanır.

    Aksi takdirde, yearMonthIntervalQualifier kaynak türü içeriyorsaMONTH, sonuç tam yıllara yuvarlanır.

Örnekler

> SELECT cast(NULL AS INTERVAL YEAR);
  NULL

> SELECT cast('1-4' AS INTERVAL YEAR TO MONTH)::STRING;
  INTERVAL '1-4' YEAR TO MONTH

> SELECT cast('1' AS INTERVAL YEAR TO MONTH);
  error

> SELECT cast(INTERVAL '1-4' YEAR TO MONTH AS INTERVAL MONTH)::STRING;
  INTERVAL '16' MONTH

> SELECT cast(14 AS INTERVAL YEAR TO MONTH)::STRING;
  INTERVAL '1-2' YEAR TO MONTH

> SELECT cast(INTERVAL '1-11' YEAR TO MONTH AS INTERVAL YEAR)::STRING;
  INTERVAL '1' YEAR

gün-saat aralığı

targetType değeri bir gün-saat aralığıysa ve sourceExpr türündeyse:

  • VOİD

    Sonuç NULL bir gün-zaman aralığıdır.

  • exact_numeric

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    Sayısal, dayTimeIntervalQualifier değerinin targetTypedaha düşük birim sayısı olarak yorumlanır. Birim SECOND herhangi bir kesir ise kesirli saniye olarak yorumlanır.

  • DİZE

    sourceExpr geçerli bir dayTimeIntervalString olmalıdır.

    sourceExpr Geçerli dayTimeIntervalStringbir değilse, Azure Databricks bir hata döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

  • gün-saat aralığı

    targetTypedayTimeIntervalQualifier, dayTimeIntervalQualifier kaynak türünün en küçük birimini içeriyorsa, değer değişmeden kalır, ancak hedef türle eşleşecek şekilde yeniden yorumlanır.

    Aksi takdirde, sourceExpr aralığı içine sığacak targetTypeşekilde kesilir.

> SELECT cast(NULL AS INTERVAL HOUR);
  NULL

> SELECT cast('1 4:23' AS INTERVAL DAY TO MINUTE)::STRING;
  INTERVAL '1 04:23' DAY TO MINUTE

> SELECT cast('1' AS INTERVAL DAY TO MINUTE);
  error

> SELECT cast(INTERVAL '1 4:23' DAY TO MINUTE AS INTERVAL MINUTE)::STRING;
  INTERVAL '1703' MINUTE

> SELECT cast(INTERVAL '1 4:23' DAY TO MINUTE AS INTERVAL HOUR)::STRING;
  INTERVAL '28' HOUR

> SELECT cast(125.3 AS INTERVAL MINUTE TO SECOND)::STRING;
  INTERVAL '2:5.3' MINUTE TO SECOND

BOOLEAN

targetTypebir BOOLEAN ise ve sourceExpr türündeyse:

  • VOİD

    Sonuç bir NULL Boole değeridir.

  • Sayısal

    Şu durumdaysa sourceExpr :

    • 0: Sonuç olarak elde edilir false.

      Aksi takdirde, sonuç şeklindedir true.

  • DİZE

    Ise sourcEexpr (büyük/küçük harfe duyarsız):

    • 'T', 'TRUE', 'Y', 'YES', or '1': Sonuç şu şekildedir: true
    • 'F', 'FALSE', 'N', 'NO', or '0': Sonuç şu şekildedir: false
    • NULL: Sonuç şu şekildedir: NULL

    Aksi takdirde, Azure Databricks boole türü hatası için geçersiz bir giriş söz dizimi döndürür.

    Geçersiz veri hatalarını içine NULLdönüştürmek için try_cast kullanın.

Örnekler

> SELECT cast(NULL AS BOOLEAN);
  NULL

> SELECT cast('T' AS BOOLEAN);
  true

> SELECT cast('True' AS BOOLEAN);
  true

> SELECT cast('1' AS BOOLEAN);
  true

> SELECT cast('0' AS BOOLEAN);
  false

> SELECT cast('n' AS BOOLEAN);
  false

> SELECT cast('on' AS BOOLEAN);
  error: invalid input syntax for type boolean

> SELECT cast(0 AS BOOLEAN);
  false

> SELECT cast(0.0E10 AS BOOLEAN);
  false

> SELECT cast(1 AS BOOLEAN);
  true

> SELECT cast(0.1 AS BOOLEAN);
  true

> SELECT cast('NaN'::FLOAT AS BOOLEAN);
  true

IKİLİ

targetType bir BINARY ise ve sourceExpr türündeyse:

  • VOİD

    Sonuç bir NULL İkili değeridir.

  • DİZE

    Sonuç, öğesinin UTF-8 kodlaması olur surceExpr.

Örnekler

> SELECT cast(NULL AS BINARY);
  NULL

> SELECT hex(cast('Spark SQL' AS BINARY));
  537061726B2053514C

> SELECT hex(cast('Oдesa' AS BINARY));
  4FD0B4657361

DİZİ

targetTypebir ARRAY < targetElementType>ise ve sourceExpr türündeyse:

  • VOİD

    Sonuç, değerinin NULL değeridir targeType.

  • ARRAY < sourceElementType >

    'den sourceElementTypetargetElementType ataması destekleniyorsa, sonucu tüm öğelerinin öğesine dökümünü içeren targetElementTypebir ARRAY<targetElementType> olur.

    Azure Databricks, atama desteklenmiyorsa veya öğelerden herhangi biri yayınlanamazsa bir hata oluşturur.

    Geçersiz verileri veya taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

Örnekler

> SELECT cast(NULL AS ARRAY<INT>);
  NULL

> SELECT cast(array('t', 'f', NULL) AS ARRAY<BOOLEAN>);
  [true, false, NULL]

> SELECT cast(array('t', 'f', NULL) AS INTERVAL YEAR);
  error: cannot cast array<string> to interval year

> SELECT cast(array('t', 'f', 'o') AS ARRAY<BOOLEAN>);
  error: invalid input syntax for type boolean: o.

HARİTA

targetType bir MAP < targetKeyType ise targetValueType > ve sourceExpr türü:

  • VOİD

    Sonuç, değerinin NULL değeridir targetType.

  • MAP <sourceKeyType, sourceValueType >

    'den ve sourceValueTypetargetValueType 'den sourceKeyTypetargetKeyType atamalar destekleniyorsa, sonuç tüm anahtarların öğesine ve tüm değerlerin targetKeyType öğesine dökümünü içeren targetValueTypebir MAP<targetKeyType, targetValueType> sonucudur.

    Azure Databricks, atama desteklenmiyorsa veya anahtarlardan veya değerlerden herhangi biri yayınlanamazsa bir hata oluşturur.

    Geçersiz verileri veya taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

Örnekler

> SELECT cast(NULL AS MAP<STRING, INT>);
  NULL

> SELECT cast(map('10', 't', '15', 'f', '20', NULL) AS MAP<INT, BOOLEAN>);
  {10:true,15:false,20:null}

> SELECT cast(map('10', 't', '15', 'f', '20', NULL) AS MAP<INT, ARRAY<INT>>);
  error: cannot cast map<string,string> to map<int,array<int>>

> SELECT cast(map('10', 't', '15', 'f', '20', 'o') AS MAP<INT, BOOLEAN>);
  error: invalid input syntax for type boolean: o.

STRUCT

targetType[targetFieldName : targetFieldType [NOT NULL] [COMMENT str] [, ...]]>bir STRUCT <ise ve sourceExpr türündeyse:

  • VOİD

    Sonuç, değerinin NULL değeridir targetType.

  • STRUCT < [sourceFieldName : sourceFieldType [NOT NULL] [COMMENT str] [, ...]] >

    sourceExpr tüm koşulların doğru olması durumunda türüne atılabilirtargetType:

    • Kaynak türü, hedefle aynı sayıda alana sahiptir
    • Tüm alanlar için: sourceFieldTypeN öğesine targetFieldTypeNyayınlanabilir.
    • Tüm alan değerleri için: N kaynak alan değeri olarak targetFieldTypeN atanabilir ve hedef alan N olarak NOT NULLişaretlenirse değer null değildir.

    sourceFieldNames, kaynak NOT NULL kısıtlamaları ve kaynağın COMMENTtargetType ile eşleşmesi gerekmez ve yok sayılır.

    Azure Databricks, atama desteklenmiyorsa veya anahtarlardan veya değerlerden herhangi biri yayınlanamazsa bir hata oluşturur.

    Geçersiz verileri veya taşma hatalarını içine NULLdönüştürmek için try_cast kullanın.

Örnekler

> SELECT cast(NULL AS STRUCT<a:INT>);
  NULL

> SELECT cast(named_struct('a', 't', 'b', '1900') AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
  {"b":true,"c":1900-01-01}

> SELECT cast(named_struct('a', 't', 'b', NULL::DATE) AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
  error: cannot cast struct<a:string,b:date> to struct<b:boolean,c:date>

> SELECT cast(named_struct('a', 't', 'b', '1900') AS STRUCT<b:BOOLEAN, c:ARRAY<INT>>);
  error: cannot cast struct<a:string,b:string> to struct<b:boolean,c:array<int>>

> SELECT cast(named_struct('a', 't', 'b', 'hello') AS STRUCT<b:BOOLEAN, c:DATE>);
  error: Cannot cast hello to DateType