更新时间:2022-02-22 GMT+08:00

类型转换函数

语法格式

CAST(value AS type)

语法说明

类型强制转换。

注意事项

  • 若输入为NULL,则返回NULL。
  • Flink作业不支持使用CAST将“BIGINT”转换为“TIMESTAMP”,可以使用to_timestamp或者to_localtimestamp进行转换。

示例

将amount值转换成字符串,长度为转换后的实际长度,配置的长度无效。

insert into temp select cast(amount as VARCHAR(10)) from source_stream;

常用类型转换函数

表1 常用类型转换函数

函数

说明

cast(v1 as varchar)

将v1转换为字符串类型,v1可以是数值类型,TIMESTAMP/DATE/TIME。

cast (v1 as int)

将v1转换为int, v1可以是数值类型或字符类。

cast(v1 as timestamp)

将v1转换为timestamp类型,v1可以是字符串或DATE/TIME。

cast(v1 as date)

将v1转换为date类型, v1可以是字符串或者TIMESTAMP。

  • cast(v1 as varchar)
    • 测试语句:
      SELECT cast(content as varchar) FROM T1;
    • 测试数据和结果
      表2 T1

      content(INT)

      varchar

      5

      "5"

  • cast (v1 as int)
    • 测试语句:
      SELECT cast(content as int) FROM T1;
    • 测试数据和结果
      表3 T1

      content(STRING)

      int

      "5"

      5

  • cast(v1 as timestamp)
    • 测试语句:
      SELECT cast(content as timestamp) FROM T1;
    • 测试数据和结果
      表4 T1

      content(STRING)

      timestamp

      "2018-01-01 00:00:01"

      1514736001000

  • cast(v1 as date)
    • 测试语句:
      SELECT cast(content as date) FROM T1;
    • 测试数据和结果
      表5 T1

      content(TIMESTAMP)

      date

      1514736001000

      "2018-01-01"

详细样例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/** source **/
CREATE
SOURCE STREAM car_infos (cast_int_to_varchar int, cast_String_to_int string,
case_string_to_timestamp string, case_timestamp_to_date timestamp) WITH (
  type = "dis",
  region = "xxxxx",
  channel = "dis-input",
  partition_count = "1",
  encode = "json",
  offset = "13",
  json_config =
"cast_int_to_varchar=cast_int_to_varchar;cast_String_to_int=cast_String_to_int;case_string_to_timestamp=case_string_to_timestamp;case_timestamp_to_date=case_timestamp_to_date"
 
);
/** sink **/
CREATE
SINK STREAM cars_infos_out (cast_int_to_varchar varchar, cast_String_to_int
int, case_string_to_timestamp timestamp, case_timestamp_to_date date) WITH (
  type = "dis",
  region = "xxxxx",
  channel = "dis-output",
  partition_count = "1",
  encode = "json",
  offset = "4",
  json_config =
"cast_int_to_varchar=cast_int_to_varchar;cast_String_to_int=cast_String_to_int;case_string_to_timestamp=case_string_to_timestamp;case_timestamp_to_date=case_timestamp_to_date",
  enable_output_null="true"
);
/** 统计car的静态信息 **/
INSERT
INTO
  cars_infos_out
SELECT
  cast(cast_int_to_varchar as varchar),
  cast(cast_String_to_int as int),
  cast(case_string_to_timestamp as timestamp),
  cast(case_timestamp_to_date as date)
FROM
  car_infos;

返回数据

{"case_string_to_timestamp":1514736001000,"cast_int_to_varchar":"5","case_timestamp_to_date":"2018-01-01","cast_String_to_int":100}