从一种数据类型转换到另一种数据类型是你在数据库中工作时经常要进行的操作。
SQL提供了一个有用的工具,称为CAST来实现这一目的。我们将在这篇文章中看到它是如何工作的。
什么是SQL中的CAST函数?
CAST使我们能够从一种数据类型转换到另一种。它对于连接不同数据类型的结果非常有帮助。它还可以帮助我们对两种不同的数据类型进行计算。
CAST并不改变数据库中的数据。转换只在查询的有效期内有效。但是可以转换并插入到一个新的列或表中。
CAST在SQL中的语法
下面是CAST函数的语法。
CAST ( expression AS data_type [ ( length ) ])
其中。
expression是查询的内容,如:。id as VARCHARdata_type是目标数据类型。length决定了目标数据类型的长度。这一部分是可选的。
如何在SQL中使用CAST函数
样本表
让我们创建一个表store_locations ,如下图所示。
-- create a table named store_locations
CREATE TABLE store_locations (
id INTEGER PRIMARY KEY,
store_name VARCHAR(10) NOT NULL,
store_id INTEGER NOT NULL,
postal_code VARCHAR(10)
);
其中。
id是主键。store_name是商店的名称,数据类型为 。VARCHARstore_id是商店的ID,是 。INTEGERpostal_code是商店的邮政地址,类型为 。VARCHAR
插入一些值后,我们的表看起来像这样。

商店_位置表
如何在SQL中把char 转换为int
让我们看看如何将char(VARCHAR)数据类型转换为int的例子。
在我们的例子中,我们的任务是生成一个新的列,将store_id 和postal_code 相加(相加),生成另一个唯一的ID。
记住,store_id 是一个INTEGER ,而postal_code 是VARCHAR 。为了将postal_code 转换为一个整数,我们可以像这样使用CAST。
-- convert char to int
-- generate a new id by adding store id and postal code
select store_id, postal_code, store_id + cast(postal_code AS INTEGER) AS [StoreID-Postalcode] from store_locations
输出。

结合列store_id和postal_code
如何在SQL中把int 转换为char
在这个例子中,我们的目标是结合两个列--store_name 和store_id --生成一个新列。
记住,store_name 是一个VARCHAR ,而store_id 是一个INTEGER 。
如果我们试图在不进行转换的情况下添加int 和char ,结果会是什么?
我们会得到一个异常,如下图所示。

类型转换异常
让我们转换一下,看看结果如何。
-- conversion from int to char
-- storename + store ID
select store_name, store_id, store_name + ' - ' + cast(store_id AS VARCHAR) AS [Storename-storeId]
from store_locations
输出。
我们可以看到,我们的输出已经被连接起来了,没有错误。

结束语
CAST函数对于转换数据类型和执行复杂的计算非常有用。
请尝试一下这些命令,并尝试一下不同的数据类型,如 "日期"。