投年代pan>
函数
适用于:年代trong>砖的SQL砖运行时
强制类型转换的值expr年代pan>
到目标数据类型类型年代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