Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Değeri expr hedef veri türüne dönüştürür type. Bu işleç, :: için bir eş anlamlıdır.
Söz dizimi
cast(sourceExpr AS targetType)
Tartışmalar
-
sourceExpr: Herhangi bir dönüştürülebilir ifade. -
targetType: Sonucun veri türü.
İadeler
Sonuç tipi targetType şeklindedir.
Veri türü atamasının aşağıdaki birleşimleri geçerlidir:
| Kaynak (satır) Hedef(sütun) | BOŞLUK | Sayısal | DİZGİ | TARİH | ZAMAN DAMGASI | TIMESTAMP_NTZ | yıl-ay aralığı | gün-saat aralığı | BOOLEAN | İKİLİ | DİZİ | HARİTA | YAPI | VARYANT | NESNE |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BOŞLUK | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Sayısal | N | Y | Y | N | Y | N | Y | Y | Y | N | N | N | N | Y | N |
| DİZGİ | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | N | N | Y | N |
| TARİH | N | N | Y | Y | Y | Y | N | N | N | N | N | N | N | Y | N |
| ZAMAN DAMGASI | N | Y | Y | Y | Y | Y | N | N | N | N | N | N | N | Y | N |
| TIMESTAMP_NTZ | N | N | Y | Y | Y | Y | N | N | N | N | N | N | N | Y | N |
| yıl-ay aralığı | N | Y | Y | N | N | N | Y | N | N | N | N | N | N | N | N |
| gün-saat aralığı | N | Y | Y | N | N | N | N | Y | N | N | N | N | N | N | N |
| BOOLEAN | N | Y | Y | N | Y | N | N | N | Y | N | N | N | N | Y | N |
| İKİLİ | N | Y | Y | N | N | N | N | N | N | Y | N | N | N | Y | N |
| DİZİ | N | N | Y | N | N | N | N | N | N | N | Y | N | N | Y | N |
| HARİTA | N | N | Y | N | N | N | N | N | N | N | N | Y | N | N | N |
| YAPI | N | N | Y | N | N | N | N | N | N | N | N | N | Y | N | N |
| VARYANT | N | Y | Y | Y | Y | Y | N | N | Y | Y | Y | Y | Y | Y | N |
| NESNE | N | N | N | N | N | N | N | N | N | N | N | Y | Y | N | N |
Yaygın hata koşulları
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".
Geçersiz biçime veya geçersiz karakterlere sahip bir sourceExpr değeri, bir targetType ile sonuçlanır NULL.
sayısal
targetType sayısal ise ve sourceExpr türündeyse:
-
Sonuç, belirtilen sayısal türdendir
NULL. -
Tamsayı sayısalsa
targetType, sonuçsourceExprtamsayıya yuvarlanır.Aksi takdirde, sonuç, mevcut ölçeğe uyması için
sourceExpryuvarlanırtargetTypehale getirilir.Değer
targetTypearalığının dışındaysa Azure Databricks CAST_OVERFLOW oluşturur.Taşma hatalarını başka bir biçime dönüştürmek için try_cast kullanın.
-
sourceExpr,targetType'nin birebir değeri olarak okunur.sourceExprdeğişmez değerlerin biçimiyle uyumlu değilse, Azure Databricks CAST_INVALID_INPUT oluşturur.Değer
targetTypearalığının dışındaysa Azure Databricks CAST_OVERFLOW oluşturur.Taşma ve geçersiz biçim hatalarını try_cast kullanarak başka bir biçime dönüştürün.
-
Sonuç,
1970-01-01 00:00:00 UTCilesourceExprarasında geçen saniye sayısıdır.Tamsayı sayısalsa
targetType, sonuç tamsayıya yuvarlanır.Aksi takdirde, sonuç yuvarlanır ve mevcut ölçeğe sığacak şekilde
targetTypeayarlanır.Sonuç
targetTypearalığının dışındaysa, Azure Databricks CAST_OVERFLOW yükseltir.Taşma hatalarını başka bir biçime dönüştürmek için try_cast kullanın.
-
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriHedef türü tam bir sayısal olmalıdır.
Belirli bir
INTERVAL upper_unit TO lower_unitverildiğinde, sonuç toplamlower_unitsayısıyla ölçülür.lower_unitiseSECOND, 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. -
Eğer
sourceExpr:-
true: Sonuç 1'dir. -
false: Sonuç 0'dır. -
NULL: Sonuç şudurNULL.
-
-
Gerçek değerin
VARIANTtipi kuralları uygulanır.
Ö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);
Error: CAST_OVERFLOW
> SELECT cast(128 AS DECIMAL(2, 0));
Error: CAST_OVERFLOW
> SELECT cast('123' AS INT);
123
> SELECT cast('123.0' AS INT);
Error: CAST_INVALID_INPUT
> 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: CAST_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
> SELECT cast('15'::VARIANT AS INT);
15
DİZGİ
sourceExpr bir STRING ise, sonuçta elde edilen STRINGsourceExprharmanlamasını devralır.
Diğer tüm durumlarda, elde edilen STRING harmanlaması, varsayılan harmanlama'dir.
Harmanlamayı değiştirmek için harmanlama ifadesini ekleyin.
targetType türü ise STRING ve sourceExpr türündeyse:
-
Sonuç bir
NULLdizedir. -
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'ınsüzerine çıkarsa, ondalık ayırıcı eklenir ve sonundaki sıfırlar ölçeklendirilecek şekilde eklenir. -
Eğer mutlak sayı
10,000,000'den küçük ve0.001'den büyük veya eşitse, sonuç ondalık ayırıcının her iki tarafında en az bir basamakla bilimsel gösterim kullanılmadan ifade edilir.Aksi takdirde, Azure Databricks bir mantis ve ardından
Eve bir üs kullanır. Mantiste, isteğe bağlı olarak başta bir eksi işareti ve ardından ondalık işaretin solunda bir rakam bulunur; sağında ise sıfırdan büyük en az bir rakam bulunur. Üs, isteğe bağlı bir baştaki eksi işaretine sahip olabilir. -
Eğer yıl MÖ 9999 ile MS 9999 arasındaysa, sonuç sırasıyla dateString biçiminde
-YYYY-MM-DDveYYYY-MM-DDolacaktır.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. -
Yıl M.Ö. 9999 ile M.S. 9999 arasındaysa, sonuç sırasıyla
timestampString veformunda bir zaman damgası olur.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 M.Ö. 9999 ile M.S. 9999 arasındaysa, sonuç sırasıyla
timestampString veformunda bir zaman damgası olur.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. -
Sonuç, aralık sabitinin en kısa gösterimidir. Aralık negatifse, işaret
interval-stringiçine eklenir. 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' YEARINTERVAL 'Y-M' YEAR TO MONTHINTERVAL 'M' MONTH
-
Sonuç, aralık sabitinin en kısa gösterimidir. Aralık negatifse, işaret
interval-stringiçine eklenir. 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' DAYINTERVAL 'D h' DAY TO HOURINTERVAL 'D h:m' DAY TO MINUTEINTERVAL 'D h:m:s' DAY TO SECONDINTERVAL 'h' HOURINTERVAL 'h:m' HOUR TO MINUTEINTERVAL 'm:s' MINUTE TO SECONDINTERVAL 's' SECOND
-
Boolean
truedeğerinin sonucuSTRINGliteraltrue'dır. Bunun içinfalseSTRING sabitidirfalse. Bunun içinNULLNULL dizesidir. -
Sonuç, ikili değer
sourceExprolarak bir UTF-8 karakter dizisi şeklinde yorumlanmıştır.Azure Databricks UTF-8 karakterlerini doğrulamaz.
BINARYtüründenSTRINGtürüne dönüşüm, asla değiştirme karakterleri eklemez veya hata oluşturmaz. -
Sonuç, köşeli ayraçlarla
[ ]çevrelenmiş, virgülle ayrılmış dönüştürme öğeleri listesidir. Her virgülden bir boşluk takip eder. BirNULLöğesi mecazi anlamdanulldeğer olarak çevrilir.Azure Databricks, köşeli ayraç veya virgül içerebilen tek tek öğeleri tırnak içine almaz veya işaretlemez.
-
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. BirNULLharita değeri, doğrudannullolarak çevrilir.Azure Databricks küme ayracı, virgül veya
->içerebilen tek tek anahtarları veya değerleri tırnak içine almaz veya işaretlemez. -
Sonuç, kıvırcık ayraçlarla
{ }çevrelenmiş, virgülle ayrılmış döküm alanı değerlerinin bir listesidir. Her virgülden bir boşluk takip eder. AlanNULLdeğeri sabitnulldeğere çevrilir.Azure Databricks, küme ayracı veya virgül içerebilen tek tek alan değerlerini tırnak içine almaz veya başka bir şekilde işaretlemez.
-
Gerçek değerin
VARIANTtipi kuralları uygulanır.
Ö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);
{}
> SELECT cast(DATE'2024-01-05'::VARIANT AS STRING);
2024-01-05
> SELECT cast(5 AS STRING) COLLATE UNICODE;
5
tarih
targetType türü ise DATE ve sourceExpr türündeyse:
-
Sonuç bir
NULLDATEşeklindedir. -
sourceExprgeçerli bir dateString olmalıdır.sourceExprgeçerli birdateStringdeğilse, Azure Databricks CAST_INVALID_INPUT yükseltir.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç, zaman damgasının
sourceExprtarih bölümüdür. -
Sonuç, timestamp_ntz
sourceExprtarih bölümüdür. -
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir.
Ö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: CAST_INVALID_INPUT
> 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
> SELECT cast(TIMESTAMP_NTZ'1900-10-01 12:13:14'::VARIANT AS DATE);
1900-10-01
ZAMAN DAMGASI
targetType türü ise TIMESTAMP ve sourceExpr türündeyse:
-
Sonuç bir
NULLDATEşeklindedir. -
sourceExprtarihinden bu yana1970-01-01 00:00:00 UTCsaniye sayısı olarak okunur.Mikrosaniyeden küçük kesirler kısaltılır.
Değer
TIMESTAMParalığının dışındaysa Azure Databricks CAST_OVERFLOW oluşturur.Taşma hatalarını başka bir biçime dönüştürmek için try_cast kullanın.
-
sourceExprgeçerli bir timestampString olmalıdır.sourceExprgeçerli birtimestampStringdeğilse, Azure Databricks CAST_INVALID_INPUT yükseltir.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç, hrs'deki
sourceExprsonucudur.DATE00:00:00
Sonuç, timestamp_ntz aynı yıl/ay/gün/saat/dakika/saniye alanlarına sahip bir zaman damgası değeridir sourceExpr.
-
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir.
Ö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: CAST_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: CAST_INVALID_INPUT
> 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
> SELECT cast(DATE'1900-10-01'::VARIANT AS TIMESTAMP);
1900-10-01 00:00:00
Zaman Damgası_NTZ
targetType türü ise TIMESTAMP_NTZ ve sourceExpr türündeyse:
-
Sonuç bir
NULLDATEşeklindedir. -
sourceExprgeçerli bir timestampString olmalıdır.sourceExprgeçerli birtimestampStringdeğilse, Azure Databricks CAST_INVALID_INPUT yükseltir.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç,
sourceExprTARİH saat00:00:00'dir. -
Sonuç, oturum saat dilimindeki yerel saattir
sourceExpr. -
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir.
Ö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: CAST_INVALID_INPUT
> 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
> SELECT cast(DATE'1900-10-01'::VARIANT AS TIMESTAMP_NTZ);
1900-10-01 00:00:00
yıl-ay aralığı
targetType yıl-ay aralığıysa ve sourceExpr türündeyse:
-
Sonuç,
NULLyıl-ay aralığıdır. -
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriSayısal,
targetTypeyearmonthIntervalQualifier'ın daha alt birimlerinin sayısı olarak yorumlanır. -
sourceExprgeçerli bir yearMonthIntervalString olmalı.sourceExprgeçerli biryearMonthIntervalStringdeğilse, Azure Databricks CAST_INVALID_INPUT yükseltir.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
targetTypeyearMonthIntervalQualifier değeri içeriyorsaMONTHdeğer değişmeden kalır, ancak hedef türle eşleşecek şekilde yeniden yorumlanır.Aksi takdirde, yearMonthIntervalQualifier kaynak türü
MONTHiçeriyorsa, sonuç tam yıllara kesilir.
Ö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: CAST_INVALID_INPUT
> 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:
-
Sonuç bir
NULLgün-saat aralığıdır. -
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeriSayısal değer,
targetTypedayTimeIntervalQualifier'ın alt birim sayısı olarak yorumlanır. BirimSECONDherhangi bir kesir ise kesirli saniye olarak yorumlanır. -
sourceExprgeçerli bir dayTimeIntervalString olmalıdır.sourceExprgeçerli birdayTimeIntervalStringdeğilse, Azure Databricks CAST_INVALID_INPUT yükseltir.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
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,
sourceExpraralığıtargetTypeuyacak ş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: CAST_INVALID_INPUT
> 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
targetType
BOOLEAN ise ve sourceExpr türündeyse:
-
Sonuç,
NULLtüründe birBOOLEAN. -
Eğer
sourceExpr:0: Sonuç şudurfalse.-
NULL: Sonuç şudurNULL. -
special floating point value: Sonuç şudurtrue.
Aksi takdirde, sonuç şeklindedir
true.-
-
Eğer
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 CAST_INVALID_INPUT yükseltir.
Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
-
Gerçek değerin
VARIANTtipi kuralları uygulanır.
Ö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: CAST_INVALID_INPUT
> 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
> SELECT cast(1::VARIANT AS BOOLEAN);
true
İKİLİ
targetType bir BINARY ise ve sourceExpr türündeyse:
-
Sonuç,
NULLtüründe birBINARY. -
Sonuç,
surceExpröğesinin UTF-8 kodlamasıdır. -
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir.
Örnekler
> SELECT cast(NULL AS BINARY);
NULL
> SELECT hex(cast('Spark SQL' AS BINARY));
537061726B2053514C
> SELECT hex(cast('Oдesa' AS BINARY));
4FD0B4657361
> SELECT hex(cast('Oдesa'::VARIANT AS BINARY));
4FD0B4657361
DİZİ
targetType bir ARRAY < hedefElemanTürü > ise ve sourceExpr türündeyse:
-
Sonuç,
NULLöğesinin birtargeTypesonucudur. -
sourceElementType'dantargetElementType'e dönüştürme destekleniyorsa, sonuç, tüm öğelerininARRAY<targetElementType>'e dönüştürüldüğü birtargetElementTypeolur.Azure Databricks, atama desteklenmiyorsa veya öğelerden herhangi biri yayınlanamazsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürün. -
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir.
Ö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: DATATYPE_MISMATCH
> SELECT cast(array('t', 'f', 'o') AS ARRAY<BOOLEAN>);
Error: CAST_INVALID_INPUT
> SELECT cast(array('t', 'f', NULL)::VARIANT AS ARRAY<BOOLEAN>);
[true, false, NULL]
HARİTA
Eğer targetType, bir MAP < hedefAnahtarTürü, hedefDeğerTürü > ise ve sourceExpr, türü:
-
Sonuç,
NULLöğesinin birtargetTypesonucudur. MAP <kaynakAnahtarTürü, kaynakDeğerTürü >
Eğer
sourceKeyTypetargetKeyType'e vesourceValueTypetargetValueType'e dönüştürmeler destekleniyorsa, sonuç, tüm anahtarlarınMAP<targetKeyType, targetValueType>türüne ve tüm değerlerintargetKeyTypetürüne dönüştürüldüğü birtargetValueTypeolacaktır.Azure Databricks, atama desteklenmiyorsa veya anahtarlardan veya değerlerden herhangi biri yayınlanamazsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürün.-
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir. OBJECT < [sourceFieldName : sourceFieldType [, ...]] >
Her
sourceFieldName,STRINGolarak dönüştürülür vetargetKeyTypeatanarak bir eşleme anahtarına dönüştürülür. Her kaynak alanı değerisourceFieldType, dönüştürülür vetargetValueTypeile ilgili eşleme değerine eşlenir.Azure Databricks, herhangi bir atama desteklenmiyorsa veya alan değerlerinden veya anahtar değerlerinden herhangi biri atılamıyorsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürü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: DATATYPE_MISMATCH
> SELECT cast(map('10', 't', '15', 'f', '20', 'o') AS MAP<INT, BOOLEAN>);
Error: CAST_INVALID_INPUT
-- Casting an OBJECT to a MAP
> SELECT schema_of_variant(parse_json('{"cars": 12, "bicycles": 5 }'));
OBJECT<bicycles: BIGINT, cars: BIGINT>
> SELECT CAST(parse_json('{"cars": 12, "bicycles": 5 }') AS MAP<STRING, INTEGER>);
{bicycles -> 5, cars -> 12}
yapı
-
Sonuç,
NULLöğesinin birtargetTypesonucudur. STRUCT < [sourceFieldName : sourceFieldType [NOT NULL] [COMMENT str] [, ...]] >
sourceExpr, bu koşulların tümü doğruysa,targetTypeolarak ayarlanabilir.- Kaynak türü, hedefle aynı sayıda alana sahiptir
- Tüm alanlar için:
sourceFieldTypeNöğesitargetFieldTypeNtürüne dönüştürülebilir. - Tüm alan değerleri için: N kaynak alan değeri olarak
targetFieldTypeNatanabilir ve hedef alan N olarakNOT NULLişaretlenirse değer null değildir.
sourceFieldName'lar, kaynakNOT NULLkısıtlamaları ve kaynakCOMMENT'lartargetTypeile eşleşmek zorunda değildir ve yok sayılırlar.Azure Databricks, atama desteklenmiyorsa veya alanlardan herhangi biri yayınlanamazsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürün.-
Veri türü tarafından tutulan gerçek değer için
VARIANTtür kuralları geçerlidir. OBJECT < [sourceFieldName : sourceFieldType [, ...]] >
Tüm
sourceFieldName'lersourceFieldName'lerle eşleştirilir. Her bir kaynak alan değerisourceFieldType, eşleştirilmiş olantargetValueType'e dönüştürülür ve ilgili eşleme değerine haritalanır.ile
targetFieldNameeşleşmezse, alan değeri olurNULL.Eğer
sourceFieldNameeşleştirilmemişse, alan yoksayılır.Azure Databricks, herhangi bir atama desteklenmiyorsa veya alan değerlerinden veya anahtar değerlerinden herhangi biri atılamıyorsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürün.
Örnekler
> SELECT cast(NULL AS STRUCT<a:INT>);
NULL
> SELECT cast(named_struct('a', 't', 'b', '1900-01-01') 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: DATATYPE_MISMATCH
> SELECT cast(named_struct('a', 't', 'b', '1900') AS STRUCT<b:BOOLEAN, c:ARRAY<INT>>);
Error: DATATYPE_MISMATCH
> SELECT cast(named_struct('a', 't', 'b', 'hello') AS STRUCT<b:BOOLEAN, c:DATE>);
Error: CAST_INVALID_INPUT
> SELECT cast(named_struct('a', 't', 'b', '1900-01-01')::VARIANT AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
{"b":true,"c":1900-01-01}
-- Casting an OBJECT to a STRUCT
> SELECT schema_of_variant(parse_json('{"name": "jason", "age": 25 }'));
OBJECT<age: BIGINT, name: STRING>
> SELECT CAST(parse_json('{"name": "jason", "age": 25 }') AS STRUCT<id: BIGINT, name: STRING>);
{"id":null,"name":"jason"}
VARYANT
targetType, bir VARIANT ise ve sourceExpr şu türden biriyse:
-
Sonuç,
NULLtüründe birVARIANT. -
Sonuç, sayısal değeri temsil eden bir
VARIANTdeğeridir.DECIMALtürlerin hassasiyeti <= 38 olmalıdır.Tüm tam sayılar
BIGINTile eşlenmiştir.Tüm
DECIMALdeğerler en düşük hassasiyet ve ölçekle eşlenir. -
Sonuç,
VARIANTdeğerini temsil eden birSTRING'dir. -
Sonuç,
VARIANTdeğerini temsil eden birDATE'dir. -
Sonuç,
VARIANTdeğerini temsil eden birTIMESTAMP'dir. -
Sonuç,
VARIANTdeğerini temsil eden birTIMESTAMP NTZ'dir. -
Sonuç,
VARIANTdeğerini temsil eden birBOOLEAN'dir. -
Sonuç,
VARIANTdeğerini temsil eden birBINARY'dir. -
sourceElementTypetüründenVARIANTtürüne dönüşüm destekleniyorsa, sonuçVARIANT,ARRAY<sourceElementType>'ü temsil eder.Azure Databricks, atama desteklenmiyorsa bir hata oluşturur.
-
VARIANTyapı alanlarının sırasını koruyamadığından dolayı bu tür atama doğrudan desteklenmez. öğesiniSTRUCTolarak dönüştürmek içinVARIANTkullanın. -
Bu cast doğrudan desteklenmez çünkü
VARIANTMAPtürünü koruyamaz. öğesiniMAPolarak dönüştürmek içinVARIANTkullanın. Eşleme anahtarları dize olmalıdır.Azure Databricks, atama desteklenmiyorsa bir hata oluşturur.
try_cast kullanarak geçersiz verileri veya taşma hatalarını
NULL'e dönüştürün.
Örnekler
> SELECT cast(NULL AS VARIANT);
NULL
> SELECT cast(5.1000 AS VARIANT);
5.1
> SELECT schema_of_variant(cast(5 AS VARIANT));
BIGINT