在SQL Server中,CAST()
函数是一种将表达式从一种数据类型转换为另一种数据类型的方法。它与 CONVERT()
类似,但在语法上更为简洁,并且通常用于简单的数据类型转换。
基本语法
CAST()
的基本语法如下:
CAST(expression AS target_data_type [ (length) ])
expression
: 需要转换的数据。target_data_type
: 目标数据类型。length
: 对于字符数据类型,可选地指定长度。
示例数据
假设我们有一个名为 Sales
的表,包含以下数据:
CREATE TABLE Sales (
SaleID int,
OrderDate varchar(10),
Quantity int,
Price money
);
INSERT INTO Sales (SaleID, OrderDate, Quantity, Price)
VALUES (1, '2024-08-01', 10, 100.00),
(2, '2024-08-02', 5, 200.00),
(3, 'invalid-date', 7, 150.00);
示例 1: 将文本转换为日期
我们可以使用 CAST()
来将 OrderDate
列中的文本转换为日期类型,并与日期进行比较:
SELECT *
FROM Sales
WHERE CAST(OrderDate AS date) BETWEEN '2024-08-01' AND '2024-08-31';
这个查询将返回所有在2024年8月1日至8月31日之间的订单记录。注意,如果 OrderDate
中包含无法转换为日期的文本,如 ‘invalid-date’,则 CAST()
会返回 NULL,并且该行不会出现在结果集中。
示例 2: 将数字转换为货币格式
假设我们需要将 Quantity
列的整数值转换为货币格式,以便更好地展示销售数量的价值:
SELECT SaleID, OrderDate, Quantity, CAST(Quantity * Price AS money) AS TotalPrice
FROM Sales;
这里我们将 Quantity
与 Price
相乘的结果转换为 money
类型。
示例 3: 将日期转换为文本
有时候我们需要将日期转换为特定格式的文本,例如为了显示或报告的目的:
SELECT SaleID, OrderDate, Quantity, Price,
CAST(CAST(OrderDate AS date) AS varchar(10)) AS FormattedDate
FROM Sales;
这里我们将 OrderDate
先转换为 date
类型,然后再转换为 varchar(10)
类型,以确保输出的格式一致。
示例 4: 将文本转换为整数
如果 OrderDate
列包含一些非日期格式的文本,我们也可以尝试将它们转换为整数,尽管这不是一个典型的用例:
SELECT SaleID, OrderDate, CAST(OrderDate AS int) AS OrderDateAsInt
FROM Sales
WHERE OrderDate NOT LIKE '%-%'; -- 确保只有纯数字被转换
请注意,这个例子假设 OrderDate
中包含了一些可以被转换为整数的文本,例如 '20240801'
。
平台中的应用
相关文章
#文本转数值#类型转换
请登录后查看回复内容