投年代pan>
函數
適用於:年代trong>磚的SQL磚運行時
強製類型轉換的值expr年代pan>
到目標數據類型類型年代pan>
。
返回
結果類型targetType年代pan>
。
以下數據類型鑄造的組合是有效的:
源(行)目標(列) |
|||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
|
N |
Y |
Y |
N |
Y |
N |
Y |
Y |
Y |
N |
N |
N |
N |
|
N |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
N |
N |
N |
|
N |
N |
Y |
Y |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
|
N |
Y |
Y |
Y |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
|
N |
N |
Y |
Y |
Y |
Y |
N |
N |
N |
N |
N |
N |
N |
|
N |
Y |
Y |
N |
N |
N |
Y |
N |
N |
N |
N |
N |
N |
|
N |
Y |
Y |
N |
N |
N |
N |
Y |
N |
N |
N |
N |
N |
|
N |
Y |
Y |
N |
Y |
N |
N |
N |
Y |
N |
N |
N |
N |
|
N |
Y |
Y |
N |
N |
N |
N |
N |
N |
Y |
N |
N |
N |
|
N |
N |
Y |
N |
N |
N |
N |
N |
N |
N |
Y |
N |
N |
|
N |
N |
Y |
N |
N |
N |
N |
N |
N |
N |
N |
Y |
N |
|
N |
N |
Y |
N |
N |
N |
N |
N |
N |
N |
N |
N |
Y |
基於targetType規則和限製
警告
在磚運行時,如果spark.sql.ansi.enabled年代pan>是假年代pan>
,一個溢出不會導致一個錯誤,而是將“包裝”的結果。
一個sourceExpr年代pan>
值和一個無效的格式或無效字符targetType年代pan>
將導致零年代pan>
。
數字
如果targetType年代pan>
是一個數字年代pan>和sourceExpr年代pan>
的類型是:
結果是一個空的指定的數值類型。
如果
targetType年代pan>
是一個積分數值年代pan>,結果是sourceExpr年代pan>
截斷年代trong>一個整數。否則,結果是
sourceExpr年代pan>
圓形的年代trong>適合的可用的規模targetType年代pan>
。如果該值超出範圍
targetType年代pan>
,一個溢出錯誤。使用try_cast年代pan>將溢出錯誤
零年代pan>
。sourceExpr年代pan>
讀取一個文本值的嗎targetType年代pan>
。如果
sourceExpr年代pan>
不符合格式的文字值,一個錯誤。如果該值為範圍以外的
targetType年代pan>
,一個溢出錯誤。使用try_cast年代pan>將溢出和無效的格式錯誤
零年代pan>
。結果是運行之間的秒數
1970-01-01年代pan>就是年代pan>UTC年代pan>
和sourceExpr年代pan>
。如果
targetType年代pan>
是一個積分數值年代pan>,結果是<年代trong>截斷年代trong>一個整數。否則,結果是<年代trong>圓形的年代trong>適合的可用的規模
targetType年代pan>
。如果結果超出範圍
targetType年代pan>
,一個溢出錯誤。使用try_cast年代pan>將溢出錯誤
零年代pan>
。適用於:年代trong>磚的SQL磚運行時11.2及以上
必須是一個目標類型確切的數字年代pan>。
給定一個
時間間隔年代pan>upper_unit年代pan>來年代pan>lower_unit年代pan>
測量結果的總數lower_unit年代pan>
。如果lower_unit年代pan>
是第二個年代pan>
分數秒存儲小數點右邊的。對於所有其他間隔結果始終是一個整數。如果
sourceExpr年代pan>
是:真正的年代pan>
:結果是0。假年代pan>
:結果是1。零年代pan>
:結果是零年代pan>
。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>INT年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>5年代pan>。年代pan>6年代pan>作為年代pan>INT年代pan>);年代pan>5年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>5年代pan>。年代pan>6年代pan>作為年代pan>小數年代pan>(年代pan>2年代pan>,年代pan>0年代pan>));年代pan>6年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>- - - - - -年代pan>5年代pan>。年代pan>6年代pan>作為年代pan>INT年代pan>);年代pan>- - - - - -年代pan>5年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>- - - - - -年代pan>5年代pan>。年代pan>6年代pan>作為年代pan>小數年代pan>(年代pan>2年代pan>,年代pan>0年代pan>));年代pan>- - - - - -年代pan>6年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>128年年代pan>作為年代pan>非常小的整數年代pan>);年代pan>溢出年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>128年年代pan>作為年代pan>小數年代pan>(年代pan>2年代pan>,年代pan>0年代pan>));年代pan>溢出年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“123”年代pan>作為年代pan>INT年代pan>);年代pan>123年年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“123.0”年代pan>作為年代pan>INT年代pan>);年代pan>無效的年代pan>格式年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間戳年代pan>“1970-01-01 00:00:01”年代pan>作為年代pan>長年代pan>);年代pan>1年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間戳年代pan>“1970-01-01 00:00:00.000001”年代pan>作為年代pan>雙年代pan>);年代pan>1年代pan>。年代pan>0年代pan>E年代pan>- - - - - -年代pan>6年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間戳年代pan>“2022-02-01”就是年代pan>作為年代pan>短整型年代pan>);年代pan>錯誤年代pan>:年代pan>溢出年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>真正的年代pan>作為年代pan>布爾年代pan>);年代pan>1年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>“1 - 2”年代pan>一年年代pan>來年代pan>月年代pan>作為年代pan>整數年代pan>);年代pan>14年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>“1:30.5”年代pan>一分鍾年代pan>來年代pan>第二個年代pan>作為年代pan>小數年代pan>(年代pan>5年代pan>,年代pan>2年代pan>));年代pan>90年年代pan>。年代pan>50年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>真正的年代pan>作為年代pan>INT年代pan>);年代pan>1年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>假年代pan>作為年代pan>INT年代pan>);年代pan>0年代pan>
字符串
如果targetType年代pan>
是一個字符串類型年代pan>和sourceExpr年代pan>
的類型是:
結果是一個空字符串。
結果是一個可選的文字數量負號,沒有前導零,除了單一數字小數點左邊的。如果
targetType年代pan>
是小數(p,年代pan>s)年代pan>
與年代年代pan>
更大的0,添加一個小數點和尾隨零加起來。如果絕對數量少
10000000年年代pan>
大於或等於0.001年代pan>
,結果是沒有科學記數法表示至少有一位小數點的兩側。否則,磚使用一個尾數緊隨其後
E年代pan>
和一個指數。尾數有一個可選的前置負號緊隨其後的是一位小數點左邊的,和數字的最小值大於零。指數和可選的前置負號。如果是在公元前9999年和公元9999年之間,是一個結果dateString年代pan>的形式
-YYYY-MM-DD年代pan>
和YYYY-MM-DD年代pan>
分別。多年之前或之後這個範圍,必要數量的數字被添加到組件和
+年代pan>
用於CE。如果是在公元前9999年和公元9999年之間,是一個結果timestampString年代pan>的形式
-YYYY-MM-DD年代pan>hh: mm: ss年代pan>
和YYYY-MM-DD年代pan>hh: mm: ss年代pan>
分別。多年之前或之後這個範圍,必要數量的數字被添加到組件和
+年代pan>
用於CE。分數秒
.f……年代pan>
必要時添加。如果是在公元前9999年和公元9999年之間,是一個結果timestampString年代pan>的形式
-YYYY-MM-DD年代pan>hh: mm: ss年代pan>
和YYYY-MM-DD年代pan>hh: mm: ss年代pan>
分別。多年之前或之後這個範圍,必要數量的數字被添加到組件和
+年代pan>
用於CE。分數秒
.f……年代pan>
必要時添加。結果是它的最短的表示間隔文字年代pan>。如果時間間隔是負的,是嵌入在跡象
interval-string年代pan>
。對於單位小於10,前導零省略。一個典型的year-month間隔字符串的形式:
時間間隔年代pan>“Y”年代pan>一年年代pan>
時間間隔年代pan>“y m”年代pan>一年年代pan>來年代pan>月年代pan>
時間間隔年代pan>“米”年代pan>月年代pan>
結果是它的最短的表示間隔文字年代pan>。如果時間間隔是負的,是嵌入在跡象
interval-string年代pan>
。對於單位小於10,前導零省略。一個典型的一天時間間隔字符串的形式:
時間間隔年代pan>' D '年代pan>一天年代pan>
時間間隔年代pan>' D年代pan>h”年代pan>一天年代pan>來年代pan>小時年代pan>
時間間隔年代pan>' D年代pan>h: m”年代pan>一天年代pan>來年代pan>一分鍾年代pan>
時間間隔年代pan>' D年代pan>h: m:年代年代pan>一天年代pan>來年代pan>第二個年代pan>
時間間隔年代pan>“h”年代pan>小時年代pan>
時間間隔年代pan>“h: m”年代pan>小時年代pan>來年代pan>一分鍾年代pan>
時間間隔年代pan>m:年代”年代pan>一分鍾年代pan>來年代pan>第二個年代pan>
時間間隔年代pan>“年代”年代pan>第二個年代pan>
的結果
真正的年代pan>
布爾是字符串真正的年代pan>
,因為假年代pan>
字符串文字假年代pan>
,對於零年代pan>
這是空字符串。結果是二進製
sourceExpr年代pan>
解讀為utf - 8字符序列。磚不驗證utf - 8字符。一個演員
二進製年代pan>
來字符串年代pan>
永遠不會注入替換字符或提高一個錯誤。結果是一個逗號分隔的列表元素,這是做好方括號
(年代pan>]年代pan>
。一個空間遵循逗號。一個零年代pan>
元素是翻譯文字零年代pan>
。磚不引用或馬克單個元素,這可能包含括號或逗號。
結果是一個逗號分隔的列表鍵值對,這是由花括號
{年代pan>}年代pan>
。一個空間遵循逗號。每個鍵值對由一個分隔- >年代pan>
。一個零年代pan>
映射值轉換成文字零年代pan>
。磚不引用或馬克個人鍵或值,可能本身可能包含花括號,逗號或
- >年代pan>
。結果是一個逗號分隔的列表字段值,這是由花括號
{年代pan>}年代pan>
。一個空間遵循逗號。一個零年代pan>
字段值是字麵翻譯零年代pan>
。磚不引用的每個字段值或標誌,可能本身可能包含花括號,或者逗號。
例子
>選擇鑄造(空字符串);空>選擇鑄造(3 y作為字符串);3 >選擇演員(5::小數(10、5)字符串);5.00000 >選擇演員(12345678軍醫為字符串);1234.5678 >選擇鑄造(1 e7字符串);1.0 e7 >選擇鑄造(1 e6字符串);1000000.0 >選擇鑄造(1軍醫字符串);1.0 >選擇演員的軍醫(1 e - 3字符串);0.001 >選擇演員(12345678 e7是字符串);1.2345678 e14燈頭>選擇演員(日期“1900-12-31”作為字符串); 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); {}
日期
如果targetType年代pan>
是一個日期類型年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零。
sourceExpr年代pan>
必須是一個有效的dateString年代pan>。如果
sourceExpr年代pan>
不是一個有效的dateString年代pan>
,磚返回一個錯誤。使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。結果是日期時間戳的一部分
sourceExpr年代pan>
。結果是timestamp_ntz的日期部分
sourceExpr年代pan>
。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>日期年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-10-01”年代pan>作為年代pan>日期年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-10-01”年代pan>作為年代pan>日期年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>——沒有2月30。年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-02-30”年代pan>作為年代pan>日期年代pan>);年代pan>錯誤年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間戳年代pan>“1900-10-01 12:13:14”年代pan>作為年代pan>日期年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>TIMESTAMP_NTZ年代pan>“1900-10-01 12:13:14”年代pan>作為年代pan>日期年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>
時間戳
如果targetType年代pan>
是一個時間戳類型年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零。
sourceExpr年代pan>
讀取以來的秒數嗎1970-01-01年代pan>就是年代pan>UTC年代pan>
。分數小於微秒截斷。
如果該值的範圍之外的
時間戳年代pan>
,一個溢出錯誤。使用try_cast年代pan>將溢出錯誤
零年代pan>
。sourceExpr年代pan>
必須是一個有效的timestampString年代pan>。如果
sourceExpr年代pan>
不是一個有效的timestampString年代pan>
,磚返回一個錯誤。使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。結果是
sourceExpr年代pan>
日期在就是年代pan>
小時。
結果是一個時間戳值相同的年/月/日/小時/分鍾/ timestamp_ntz的第二個字段sourceExpr年代pan>
。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>時間戳年代pan>);年代pan>零年代pan>>年代pan>集年代pan>時間年代pan>區年代pan>“+ 00:00”年代pan>;年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>0年代pan>。年代pan>0年代pan>作為年代pan>時間戳年代pan>);年代pan>1970年年代pan>- - - - - -年代pan>01年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>0年代pan>。年代pan>0000009年代pan>作為年代pan>時間戳年代pan>);年代pan>1970年年代pan>- - - - - -年代pan>01年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>1年代pan>e20年代pan>作為年代pan>時間戳年代pan>);年代pan>錯誤年代pan>:年代pan>溢出年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900”年代pan>作為年代pan>時間戳年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>01年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-10-01 12:13:14”年代pan>作為年代pan>時間戳年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>12年代pan>:年代pan>13年代pan>:年代pan>14年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-02-30 12:13:14”年代pan>作為年代pan>時間戳年代pan>);年代pan>錯誤年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>日期年代pan>“1900-10-01”年代pan>作為年代pan>時間戳年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>TIMESTAMP_NTZ年代pan>“2023-01-01 02:03:04.567”年代pan>作為年代pan>時間戳年代pan>)年代pan>2023年年代pan>- - - - - -年代pan>01年代pan>- - - - - -年代pan>01年代pan>02年代pan>:年代pan>03年代pan>:年代pan>04年代pan>。年代pan>567年年代pan>
TIMESTAMP_NTZ
如果targetType年代pan>
是一個TIMESTAMP_NTZ類型年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零。
sourceExpr年代pan>
必須是一個有效的timestampString年代pan>。如果
sourceExpr年代pan>
不是一個有效的timestampString年代pan>
,磚返回一個錯誤。使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。結果是
sourceExpr年代pan>
日期在就是年代pan>
小時。
結果是當地時間的sourceExpr年代pan>
在會話時區。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900”年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>01年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-10-01 12:13:14”年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>12年代pan>:年代pan>13年代pan>:年代pan>14年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1900-02-30 12:13:14”年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>錯誤年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>日期年代pan>“1900-10-01”年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>1900年年代pan>- - - - - -年代pan>10年代pan>- - - - - -年代pan>01年代pan>00年代pan>:年代pan>00年代pan>:年代pan>00年代pan>>年代pan>選擇年代pan>current_timezone年代pan>(),年代pan>投年代pan>(年代pan>時間戳年代pan>2021 - 7 - 1 - t8:43:28年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>美國年代pan>/年代pan>Los_Angeles年代pan>2021年年代pan>- - - - - -年代pan>07年年代pan>- - - - - -年代pan>01年代pan>08年年代pan>:年代pan>43年代pan>:年代pan>28年代pan>>年代pan>選擇年代pan>current_timezone年代pan>(),年代pan>投年代pan>(年代pan>時間戳年代pan>2021 - 7 - 1 - t8:43:28utc + 3 '年代pan>作為年代pan>TIMESTAMP_NTZ年代pan>);年代pan>美國年代pan>/年代pan>Los_Angeles年代pan>2021年年代pan>- - - - - -年代pan>06年代pan>- - - - - -年代pan>30.年代pan>22年代pan>:年代pan>43年代pan>:年代pan>28年代pan>
year-month間隔
如果targetType年代pan>
是一個year-month間隔年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零year-month間隔。
適用於:年代trong>磚的SQL磚運行時11.2及以上
數字是解釋為較低的單位的數量
targetType年代pan>
yearmonthIntervalQualifier年代pan>。sourceExpr年代pan>
必須是一個有效的yearMonthIntervalString年代pan>。如果
sourceExpr年代pan>
不是一個有效的yearMonthIntervalString年代pan>
,磚返回一個錯誤。使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。如果
targetType年代pan>
yearMonthIntervalQualifier年代pan>包括月年代pan>
價值不變,但重新解釋與目標類型相匹配。否則,如果源類型yearMonthIntervalQualifier年代pan>包括
月年代pan>
年,結果被截斷。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>時間間隔年代pan>一年年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1 - 4”年代pan>作為年代pan>時間間隔年代pan>一年年代pan>來年代pan>月年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“1 - 4”年代pan>一年年代pan>來年代pan>月年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>' 1 '年代pan>作為年代pan>時間間隔年代pan>一年年代pan>來年代pan>月年代pan>);年代pan>錯誤年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>“1 - 4”年代pan>一年年代pan>來年代pan>月年代pan>作為年代pan>時間間隔年代pan>月年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“16”年代pan>月年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>14年代pan>作為年代pan>時間間隔年代pan>一年年代pan>來年代pan>月年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“1 - 2”年代pan>一年年代pan>來年代pan>月年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>1 - 11的年代pan>一年年代pan>來年代pan>月年代pan>作為年代pan>時間間隔年代pan>一年年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>' 1 '年代pan>一年年代pan>
白天的時間間隔
如果targetType年代pan>
是一個白天的時間間隔年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零白天間隔。
適用於:年代trong>磚的SQL磚運行時11.2及以上
數字是解釋為較低的單位的數量
targetType年代pan>
dayTimeIntervalQualifier年代pan>。如果單位是第二個年代pan>
解釋為任何分數分數秒。sourceExpr年代pan>
必須是一個有效的dayTimeIntervalString年代pan>。如果
sourceExpr年代pan>
不是一個有效的dayTimeIntervalString年代pan>
,磚返回一個錯誤。使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。如果
targetType年代pan>
dayTimeIntervalQualifier年代pan>包括源類型的最小單位dayTimeIntervalQualifier年代pan>值保持不變,但重新解釋與目標類型相匹配。否則,
sourceExpr年代pan>
時間間隔是符合截斷targetType年代pan>
。
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>時間間隔年代pan>小時年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“1 23”年代pan>作為年代pan>時間間隔年代pan>一天年代pan>來年代pan>一分鍾年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“1 04:23”年代pan>一天年代pan>來年代pan>一分鍾年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>' 1 '年代pan>作為年代pan>時間間隔年代pan>一天年代pan>來年代pan>一分鍾年代pan>);年代pan>錯誤年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>“1 23”年代pan>一天年代pan>來年代pan>一分鍾年代pan>作為年代pan>時間間隔年代pan>一分鍾年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“1703”年代pan>一分鍾年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>時間間隔年代pan>“1 23”年代pan>一天年代pan>來年代pan>一分鍾年代pan>作為年代pan>時間間隔年代pan>小時年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“28”年代pan>小時年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>125年年代pan>。年代pan>3年代pan>作為年代pan>時間間隔年代pan>一分鍾年代pan>來年代pan>第二個年代pan>)::年代pan>字符串年代pan>;年代pan>時間間隔年代pan>“2:5.3”年代pan>一分鍾年代pan>來年代pan>第二個年代pan>
布爾
如果targetType年代pan>
是一個布爾年代pan>和sourceExpr年代pan>
的類型是:
結果是一個零布爾。
如果
sourceExpr年代pan>
是:0年代pan>
:結果是假年代pan>
。零年代pan>
:結果是零年代pan>
。“特殊浮點值”年代pan>:結果是
真正的年代pan>
。
否則,結果是
真正的年代pan>
。
如果
sourcEexpr年代pan>
(不區分大小寫):“T”,年代pan>“真正的”,年代pan>“Y”,年代pan>“是的”,年代pan>或年代pan>' 1 '年代pan>
:結果是真正的年代pan>
“F”,年代pan>“假”,年代pan>“N”,年代pan>“不”,年代pan>或年代pan>' 0 '年代pan>
:結果是假年代pan>
零年代pan>
:結果是零年代pan>
否則,磚返回一個無效的輸入類型邏輯錯誤的語法。
使用try_cast年代pan>把無效的數據錯誤
零年代pan>
。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>布爾年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“T”年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“真正的”年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>' 1 '年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>' 0 '年代pan>作為年代pan>布爾年代pan>);年代pan>假年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“n”年代pan>作為年代pan>布爾年代pan>);年代pan>假年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“上”年代pan>作為年代pan>布爾年代pan>);年代pan>錯誤年代pan>:年代pan>無效的年代pan>輸入年代pan>語法年代pan>為年代pan>類型年代pan>布爾年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>0年代pan>作為年代pan>布爾年代pan>);年代pan>假年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>0年代pan>。年代pan>0年代pan>E10汽油年代pan>作為年代pan>布爾年代pan>);年代pan>假年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>1年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>0年代pan>。年代pan>1年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>“南”年代pan>::年代pan>浮動年代pan>作為年代pan>布爾年代pan>);年代pan>真正的年代pan>
二進製
如果targetType年代pan>
是一個二進製年代pan>和sourceExpr年代pan>
的類型是:
數組
如果targetType年代pan>
是一個數組< targetElementType >年代pan>和sourceExpr年代pan>
的類型是:
結果是空的
targeType年代pan>
。如果演員
sourceElementType年代pan>
來targetElementType年代pan>
支持,結果是一個數組< targetElementType >年代pan>
與所有元素的targetElementType年代pan>
。磚提出一個錯誤如果演員不支持或如果任何元素不能投。
使用try_cast年代pan>把無效的數據或溢出錯誤
零年代pan>
。
例子
>年代pan>選擇年代pan>投年代pan>(年代pan>零年代pan>作為年代pan>數組年代pan><年代pan>INT年代pan>>年代pan>);年代pan>零年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>數組年代pan>(年代pan>“t”年代pan>,年代pan>“f”年代pan>,年代pan>零年代pan>)年代pan>作為年代pan>數組年代pan><年代pan>布爾年代pan>>年代pan>);年代pan>(年代pan>真正的年代pan>,年代pan>假年代pan>,年代pan>零年代pan>]年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>數組年代pan>(年代pan>“t”年代pan>,年代pan>“f”年代pan>,年代pan>零年代pan>)年代pan>作為年代pan>時間間隔年代pan>一年年代pan>);年代pan>錯誤年代pan>:年代pan>不能年代pan>投年代pan>數組年代pan><年代pan>字符串年代pan>>年代pan>來年代pan>時間間隔年代pan>一年年代pan>>年代pan>選擇年代pan>投年代pan>(年代pan>數組年代pan>(年代pan>“t”年代pan>,年代pan>“f”年代pan>,年代pan>“o”年代pan>)年代pan>作為年代pan>數組年代pan><年代pan>布爾年代pan>>年代pan>);年代pan>錯誤年代pan>:年代pan>無效的年代pan>輸入年代pan>語法年代pan>為年代pan>類型年代pan>布爾年代pan>:年代pan>o年代pan>。年代pan>
地圖
如果targetType年代pan>
是一個MAP < targetKeyType, targetValueType >年代pan>和sourceExpr年代pan>
的類型是:
結果是空的
targetType年代pan>
。MAP < sourceKeyType, sourceValueType >年代pan>
如果投的
sourceKeyType年代pan>
來targetKeyType年代pan>
和sourceValueType年代pan>
來targetValueType年代pan>
支持,結果是一個MAP < targetKeyType,年代pan>targetValueType >年代pan>
與所有鑰匙的targetKeyType年代pan>
和所有的值targetValueType年代pan>
。磚提出一個錯誤如果演員不支持或者任何鍵或值不能投。
使用try_cast年代pan>把無效的數據或溢出錯誤
零年代pan>
。
結構體
如果targetType年代pan>
是一個STRUCT < [targetFieldName: targetFieldType [NOT NULL][評論str] […]] >年代pan>和sourceExpr年代pan>
的類型是:
結果是空的
targetType年代pan>
。STRUCT < [sourceFieldName: sourceFieldType [NOT NULL][評論str] […]] >年代pan>
的
sourceExpr年代pan>
可以投targetType年代pan>
如果你所有的條件是正確的:源類型具有相同數量的字段作為目標
對於所有字段:
sourceFieldTypeN年代pan>
可以投到嗎targetFieldTypeN年代pan>
。對於所有字段值:源字段值N可以投
targetFieldTypeN年代pan>
值不是null如果目標字段N是標記為不年代pan>零年代pan>
。
sourceFieldName年代pan>
年代,源不年代pan>零年代pan>
約束和來源評論年代pan>
不需要匹配targetType年代pan>
和被忽略。磚提出一個錯誤如果演員不支持或者任何鍵或值不能投。
使用try_cast年代pan>把無效的數據或溢出錯誤
零年代pan>
。
例子
>選擇演員(NULL作為STRUCT <答:INT >);空>選擇演員(named_struct (' a ', ' t ', ' b ', ' 1900 ')作為STRUCT < b:布爾,c:日期NOT NULL評論'你好' >);{“b”:真的,“c”: 1900-01-01} >選擇演員(named_struct (' a ', ' t ', ' b ',零::日期)作為STRUCT < b:布爾,c:日期NOT NULL評論'你好' >);錯誤:不能把結構體<字符串,b:日期> struct < b:布爾,c:日期> >選擇演員(named_struct (' a ', ' t ', ' b ', ' 1900 ')作為struct < b:布爾,c:數組< INT > >);錯誤:不能把結構體<字符串,b:字符串> struct < b:布爾,c:數組< int > > >選擇演員(named_struct (' a ', ' t ', ' b ', '你好')作為struct < b:布爾,c:日期>);錯誤:不能投喂DateType