介绍
在 MSSQL 中,数据类型的转换是非常常见的操作。对于开发人员来说,需要掌握常用数据类型之间的转换方式,尤其是将一些字符串类型转换成整数类型的操作,这在编写 SQL 查询语句时是非常常见的操作。
常用数据类型转换
将整数类型转换为字符串类型
在 MSSQL 中,将整数类型转换为字符串类型使用 CAST 函数 (或 CONVERT 函数)。对于整数类型可以使用以下的方法转换成字符串。
DECLARE @val INT = 100;
SELECT CAST( @val AS VARCHAR);
-- 或者
SELECT CONVERT( VARCHAR, @val);
上述语句将整数类型的变量 @val 转换为字符串类型。
将字符串类型转换为整数类型
将字符串转换成整数类型,可以使用 CAST 函数 (或 CONVERT 函数),也可以使用 TRY_CONVERT 函数。
CAST 函数
这是最常见的 SQL 转换函数之一可以将字符串类型转换成整数类型。
SELECT CAST('100' AS INT);
-- 或者
SELECT CAST('100' AS INTEGER);
CONVERT 函数
该函数功能与 CAST 函数相似,可以将字符串类型转换成整数类型,不同之处在于 CONVERT 函数可以使用格式化字符串指定要转换的输出格式。
SELECT CONVERT(INT, '100');
-- 或者
SELECT CONVERT(INTEGER, '100');
-- 带格式化的转换
SELECT CONVERT(INT, '1,000');
SELECT CONVERT(INT, '$ 1000.55', 1);
TRY_CONVERT 函数
TRY_CONVERT 函数与 CONVERT 函数的功能相同,但无法确定数据是否可以成功转换。TRY_CONVERT 函数不会抛出转换失败的异常,而是返回 NULL 值。这可以用来判断字符串是否是能够转换成整数类型。
SELECT TRY_CONVERT(INT, '100');
-- 如果无法转换,则结果为 NULL
SELECT TRY_CONVERT(INT, 'abc');
实例演练
将字符串转换成整数
假设我们有一个包含年龄的字符串列表,我们需要将字符串转换成整数以进行统计和汇总工作
DECLARE @ageList TABLE (id INT IDENTITY(1,1), age VARCHAR(10));
INSERT INTO @ageList(age) VALUES ('23'), ('24'), ('18'), ('32'), ('1'), (''), ('78');
SELECT id, age, ISNULL(TRY_CONVERT(INT, age), 0) AS Age2 FROM @ageList;
使用 TRY_CONVERT 函数,我们将 age 字符串字段转换成名为 Age2 的整数字段。如果字符串无法转换,则使用 ISNULL 函数将 Age2 字段设为 0。
将浮点数转换成整数
在 SQL 查询语句中,有时需要将浮点数值转换成整数,可以使用 CAST 或 CONVERT 函数来达到目的。
DECLARE @floatValue FLOAT = 12.34;
SELECT CAST( @floatValue AS INT);
以上实例将 12.34 的浮点数转换成整数类型并输出结果。
总结
到这里,我们了解了在 MSSQL 中常用的数据类型转换方法。对于开发人员来说,经常需要转换数据类型,因此理解数据类型之间的转换方法是非常重要的。