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 |
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çsourceExpr
tamsayıya yuvarlanır.Aksi takdirde, sonuç, mevcut ölçeğe uyması için
sourceExpr
yuvarlanırtargetType
hale getirilir.Değer aralığının
targetType
dışındaysa bir taşma hatası oluşur.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.Eğer
sourceExpr
değişmez değerlerin biçimiyle uyumlu değilse, bir hata oluşur.Değer aralığının
targetType
dışındaysa bir taşma hatası oluşur.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 UTC
ilesourceExpr
arası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
targetType
ayarlanır.Sonuç aralığının
targetType
dışındaysa taşma hatası oluşur.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 üzeri
Hedef türü tam bir sayısal olmalıdır.
Belirli bir
INTERVAL upper_unit TO lower_unit
verildiğinde, sonuç toplamlower_unit
sayısıyla ö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. -
Eğer
sourceExpr
:-
true
: Sonuç 1'dir. -
false
: Sonuç 0'dır. -
NULL
: Sonuç şudurNULL
.
-
-
Gerçek değerin
VARIANT
tipi 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);
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
> SELECT cast('15'::VARIANT AS INT);
15
DİZGİ
sourceExpr
bir STRING
ise, sonuçta elde edilen STRING
sourceExpr
harmanlaması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
NULL
dizedir. -
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.
targetType
DECIMAL(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 mantissa ve ardından
E
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-DD
veYYYY-MM-DD
olacaktı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-string
iç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' YEAR
INTERVAL 'Y-M' YEAR TO MONTH
INTERVAL 'M' MONTH
-
Sonuç, aralık sabitinin en kısa gösterimidir. Aralık negatifse, işaret
interval-string
iç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' 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
true
değerinin sonucuSTRING
literaltrue
'dır. Bunun içinfalse
STRING sabitidirfalse
. Bunun içinNULL
NULL dizesidir. -
Sonuç, ikili değer
sourceExpr
olarak bir UTF-8 karakter dizisi şeklinde yorumlanmıştır.Azure Databricks UTF-8 karakterlerini doğrulamaz.
BINARY
türündenSTRING
tü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 anlamdanull
değer olarak çevrilir.Azure Databricks, köşeli ayraç veya virgül içerebilen bireysel öğeleri alıntılamaz veya başka bir şekilde 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. BirNULL
harita değeri, doğrudannull
olarak çevrilir.Azure Databricks, kendileri küme parantezi, virgül veya
->
içerebilen tek tek anahtarları veya değerleri tırnak içine almaz veya başka şekilde belirtmez. -
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. AlanNULL
değeri sabitnull
değ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.
-
Gerçek değerin
VARIANT
tipi 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
NULL
DATE
şeklindedir. -
sourceExpr
geçerli bir dateString olmalıdır.Azure Databricks,
sourceExpr
geçerli birdateString
değilse bir hata döndürür.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç, zaman damgasının
sourceExpr
tarih bölümüdür. -
Sonuç, timestamp_ntz
sourceExpr
tarih bölümüdür. -
Veri türü tarafından tutulan gerçek değer için
VARIANT
tü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
> 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
NULL
DATE
şeklindedir. -
sourceExpr
tarihinden bu yana1970-01-01 00:00:00 UTC
saniye sayısı olarak okunur.Mikrosaniyeden küçük kesirler kısaltılır.
Değer aralığının
TIMESTAMP
dışındaysa bir taşma hatası oluşur.Taşma hatalarını başka bir biçime dönüştürmek için try_cast kullanın.
-
sourceExpr
geçerli bir timestampString olmalıdır.Azure Databricks,
sourceExpr
geçerli birtimestampString
değilse bir hata döndürür.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç, hrs'deki
sourceExpr
sonucudur.DATE
00: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
VARIANT
tü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: 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
> 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
NULL
DATE
şeklindedir. -
sourceExpr
geçerli bir timestampString olmalıdır.Azure Databricks,
sourceExpr
geçerli birtimestampString
değilse bir hata döndürür.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
Sonuç,
sourceExpr
TARİH saat00:00:00
'dir. -
Sonuç, oturum saat dilimindeki yerel saattir
sourceExpr
. -
Veri türü tarafından tutulan gerçek değer için
VARIANT
tü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
> 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ç,
NULL
yıl-ay aralığıdır. -
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeri
Sayısal,
targetType
yearmonthIntervalQualifier'ın daha alt birimlerinin sayısı olarak yorumlanır. -
sourceExpr
geçerli bir yearMonthIntervalString olmalı.Azure Databricks,
sourceExpr
geçerli biryearMonthIntervalString
değilse bir hata döndürür.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
targetType
yearMonthIntervalQualifier değeri içeriyorsaMONTH
değer değişmeden kalır, ancak hedef türle eşleşecek şekilde yeniden yorumlanır.Aksi takdirde, yearMonthIntervalQualifier kaynak türü
MONTH
iç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
> 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
NULL
gün-saat aralığıdır. -
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 11.3 LTS ve üzeri
Sayısal değer,
targetType
dayTimeIntervalQualifier'ın alt birim sayısı olarak yorumlanır. BirimSECOND
herhangi bir kesir ise kesirli saniye olarak yorumlanır. -
sourceExpr
geçerli bir dayTimeIntervalString olmalıdır.Azure Databricks,
sourceExpr
geçerli birdayTimeIntervalString
değilse bir hata döndürür.Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
targetType
dayTimeIntervalQualifier, 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ığıtargetType
uyacak ş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
targetType
BOOLEAN ise ve sourceExpr
türündeyse:
-
Sonuç,
NULL
tü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 boole türü hatası için geçersiz bir giriş söz dizimi döndürür.
Geçersiz veri hatalarını başka bir forma dönüştürmek için try_cast kullanın.
-
-
Gerçek değerin
VARIANT
tipi 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: 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
> SELECT cast(1::VARIANT AS BOOLEAN);
true
İKİLİ
targetType
bir BINARY ise ve sourceExpr
türündeyse:
-
Sonuç,
NULL
türünde birBINARY
. -
Sonuç,
surceExpr
öğesinin UTF-8 kodlamasıdır. -
Veri türü tarafından tutulan gerçek değer için
VARIANT
tü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 birtargeType
sonucudur. -
sourceElementType
'dantargetElementType
'e dönüştürme destekleniyorsa, sonuç, tüm öğelerininARRAY<targetElementType>
'e dönüştürüldüğü birtargetElementType
olur.Azure Databricks, dönüştürme desteklenmiyorsa veya öğelerden herhangi biri dönüştürülemezse 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
VARIANT
tü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: cannot cast array<string> to interval year
> SELECT cast(array('t', 'f', 'o') AS ARRAY<BOOLEAN>);
error: invalid input syntax for type boolean: o.
> 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 birtargetType
sonucudur. MAP <kaynakAnahtarTürü, kaynakDeğerTürü >
Eğer
sourceKeyType
targetKeyType
'e vesourceValueType
targetValueType
'e dönüştürmeler destekleniyorsa, sonuç, tüm anahtarlarınMAP<targetKeyType, targetValueType>
türüne ve tüm değerlerintargetKeyType
türüne dönüştürüldüğü birtargetValueType
olacaktır.Azure Databricks, dönüştürme desteklenmiyorsa veya anahtarların veya değerlerin herhangi biri dönüştürülemezse bir hata verir.
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
VARIANT
tür kuralları geçerlidir. OBJECT < [sourceFieldName : sourceFieldType [, ...]] >
Her
sourceFieldName
,STRING
olarak dönüştürülür vetargetKeyType
atanarak bir eşleme anahtarına dönüştürülür. Her kaynak alanı değerisourceFieldType
, dönüştürülür vetargetValueType
ile ilgili eşleme değerine eşlenir.Azure Databricks, herhangi bir dönüşüm desteklenmiyorsa veya alan değerleri veya anahtar değerleri dönüştürülemezse 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: 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.
-- 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 birtargetType
sonucudur. STRUCT < [sourceFieldName : sourceFieldType [NOT NULL] [COMMENT str] [, ...]] >
sourceExpr
, bu koşulların tümü doğruysa,targetType
olarak ayarlanabilir.- Kaynak türü, hedefle aynı sayıda alana sahiptir
- Tüm alanlar için:
sourceFieldTypeN
öğesitargetFieldTypeN
türüne dönüştürülebilir. - Tüm alan değerleri için: N kaynak alan değeri olarak
targetFieldTypeN
atanabilir ve hedef alan N olarakNOT NULL
işaretlenirse değer null değildir.
sourceFieldName
'lar, kaynakNOT NULL
kısıtlamaları ve kaynakCOMMENT
'lartargetType
ile eşleşmek zorunda değildir ve yok sayılırlar.Azure Databricks, dönüştürme desteklenmiyorsa veya alanlardan herhangi biri dönüştürülemezse hata verir.
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
VARIANT
tü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
targetFieldName
eşleşmezse, alan değeri olurNULL
.Eğer
sourceFieldName
eşleştirilmemişse, alan yoksayılır.Azure Databricks, herhangi bir dönüşüm desteklenmiyorsa veya alan değerleri veya anahtar değerleri dönüştürülemezse 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: 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
> 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ç,
NULL
türünde birVARIANT
. -
Sonuç, sayısal değeri temsil eden bir
VARIANT
değeridir.DECIMAL
türlerin hassasiyeti <= 38 olmalıdır.Tüm tam sayılar
BIGINT
ile eşlenmiştir.Tüm
DECIMAL
değerler en düşük hassasiyet ve ölçekle eşlenir. -
Sonuç,
VARIANT
değerini temsil eden birSTRING
'dir. -
Sonuç,
VARIANT
değerini temsil eden birDATE
'dir. -
Sonuç,
VARIANT
değerini temsil eden birTIMESTAMP
'dir. -
Sonuç,
VARIANT
değerini temsil eden birTIMESTAMP NTZ
'dir. -
Sonuç,
VARIANT
değerini temsil eden birBOOLEAN
'dir. -
Sonuç,
VARIANT
değerini temsil eden birBINARY
'dir. -
sourceElementType
türündenVARIANT
türüne dönüşüm destekleniyorsa, sonuçVARIANT
,ARRAY<sourceElementType>
'ü temsil eder.Azure Databricks, dönüşüm desteklenmiyorsa hata verir.
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