CAST 函数在 Cassandra 中主要用于将数据从一种数据类型转换为另一种数据类型。
在 Cassandra 中,CAST 函数主要支持在 SELECT 语句中使用。让我们来看看如何在其 SELECT 语句中使用 CAST 函数。
SELECT CAST([fieldname] AS [data type])
FROM [table name]
CAST 的基本功能:
- 它可以将任何原生数据类型转换为 text 数据类型,支持 ASCII 和 UTF-8 等格式。
- 它可以在数值数据类型之间进行转换,例如从 INLINECODE7bde20fc 转换为 INLINECODEb1fd1604,或从 INLINECODE6c1bc05c 转换为 INLINECODE67cef666 等。
- 通过使用 CAST 函数,我们可以处理最常见的转换场景。
- 它在优化方面非常有帮助,特别是当我们需要频繁地在不同数据类型之间进行切换时。
- 我们还可以利用 CAST 函数将 timestamp 转换为 text,以便在 Cassandra 中进行显示。
这里有一个供参考的表格,其中列出了所有可以从一种数据类型转换为另一种数据类型的原生数据类型。
让我们来看一下,
表格: CAST 转换表
下表描述了 CAST 函数支持的转换。如果将一个数据类型转换为其自身的数据类型,Cassandra 将静默忽略该转换操作。
To
—
text, varchar
tinyint, smallint, int, float, double, decimal, varint, text, varchar
text, varchar
tinyint, smallint, int, bigint, float, double, decimal, varint, text, varchar
timestamp
tinyint, smallint, int, bigint, float, double, varint, text, varchar
tinyint, smallint, int, bigint, float, decimal, varint, text, varchar
tinyint, smallint, int, bigint, double, decimal, varint, text, varchar
text, varchar
tinyint, smallint, bigint, float, double, decimal, varint, text, varchar
tinyint, int, bigint, float, double, decimal, varint, text, varchar
text, varchar
date, text, varchar
timestamp, date, text, varchar
tinyint, smallint, int, bigint, float, double, decimal, varint, text, varchar
text, varchar
tinyint, smallint, int, bigint, float, double, decimal, text, varchar来源 – Cassandra.Apache.org
CAST 函数的 CQL 查询示例:
让我们举个例子:假设我们有一个名为 movies 的表,我们想要改变其中的原生数据类型。具体来说,movie_date 是一个字段名,它目前的类型是 timestamp 数据类型,如果我们想将其转换为另一种原生数据类型,比如 text 数据类型。
要创建此表,请使用以下 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 函数从一种数据类型转换为另一种数据的格式。下面的语句意味着我们要将 moviedate 时间戳转换为 moviedate 文本。
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 (时间戳格式)
- 结果: 使用 CAST
SELECT CAST(movie_date AS text)
FROM movies
WHERE movie_id = 7c3cffb8-0dc4-1d27-af24-c007b5fc5643;
输出:
2019-10-15 01:11:50.000Z (协调世界时,即 UTC)