CAST函数有助于在 Cassandra 中将数据从一种数据类型转换为另一种数据类型。
在 Cassandra CAST函数中 SELECT 语句支持。让我们看看如何在 select 语句中使用 CAST函数。
SELECT CAST([fieldname] AS [data type])
FROM [table name]
CAST的基本函数:
- 它将任何本机数据类型转换为 ASCII 和 UTF-8 等格式的文本数据类型。
- 它在数字数据类型之间转换,例如从 `int` 到 `smallint`、`smallint` 到 `int` 等。
- 通过使用 CAST函数,我们可以转换最常见的用例。
- 在需要频繁从一种数据类型更改为另一种数据类型的优化情况下,它非常有用。
- 通过使用 CAST函数,我们可以将时间戳转换为文本,以便在 Cassandra 中进行显示。
这是一个供参考的表,其中所有可以从一种数据类型转换为另一种数据类型的本机数据类型。
我们来看一下,
表: CAST 转换表
下表描述了 cast函数支持的转换。 Cassandra 将默默地忽略任何将数据类型转换为它自己的数据类型的强制转换。
From | To |
---|---|
ascii | text, varchar |
bigint | tinyint, smallint, int, float, double, decimal, varint, text, varchar |
boolean | text, varchar |
counter | tinyint, smallint, int, bigint, float, double, decimal, varint, text, varchar |
date | timestamp |
decimal | tinyint, smallint, int, bigint, float, double, varint, text, varchar |
double | tinyint, smallint, int, bigint, float, decimal, varint, text, varchar |
float | tinyint, smallint, int, bigint, double, decimal, varint, text, varchar |
inet | text, varchar |
int | tinyint, smallint, bigint, float, double, decimal, varint, text, varchar |
smallint | tinyint, int, bigint, float, double, decimal, varint, text, varchar |
time | text, varchar |
timestamp | date, text, varchar |
timeuuid | timestamp, date, text, varchar |
tinyint | tinyint, smallint, int, bigint, float, double, decimal, varint, text, varchar |
uuid | text, varchar |
varint | tinyint, smallint, int, bigint, float, double, decimal, text, varchar |
来源 – Cassandra.Apache.org
CAST函数的CQL 查询:
让我们举个例子: movies是一个表名,我们希望在其中更改其原生数据类型,例如movie_date是具有时间戳数据类型的字段名称,如果我们想将其转换为另一种原生数据类型,例如文本数据类型。
要创建表,请使用以下 CQL 查询。
CREATE TABLE movies
(
movie_id int,
movie_date timestamp,
PRIMARY KEY (movie_id)
);
将以下数据插入表中:
movie_id : 7c3cffb8-0dc4-1d27-af24-c007b5fc5643
movie_date : 2019-10-15 01:11:50.000000+0000
INSERT INTO movies (movie_id, movie_date)
VALUES (7c3cffb8-0dc4-1d27-af24-c007b5fc5643,
'2019-10-15 01:11:50.000000+0000 ');
因此,这里是我们如何使用 CAST函数从一种数据类型转换为另一种数据类型的格式。下面给出的语句意味着我们要将 movie_date 时间戳转换为 movie_date 文本。
SELECT CAST(movie_date AS text)
- 结果:没有 CAST
SELECT movie_date FROM movies WHERE movie_id = 7c3cffb8-0dc4-1d27-af24-c007b5fc5643;
输出:
2019-10-15 01:11:50.000000+0000 (time stamp format)
- 结果:使用 CAST
SELECT CAST(movie_date AS text) FROM movies WHERE movie_id = 7c3cffb8-0dc4-1d27-af24-c007b5fc5643;
输出:
2019-10-15 01:11:50.000Z (Coordinated Universal Time, or UTC)