SQL字符转数字

在数据库中,经常会遇到将字符类型的数据转换为数字类型的需求,这在数据分析和数据处理中非常常见。本文将详细解释如何在 SQL 中进行字符转数字的操作,并提供一些示例代码。
1. CAST 函数
在 SQL 中,我们可以使用 CAST 函数来实现字符转数字的操作。CAST 函数可以将一个表达式转换为指定的数据类型。
SELECT CAST(expression AS data_type) AS result;
其中,expression 是要转换的表达式,可以是一个列名、计算表达式或常量,data_type 是要转换的目标数据类型。
下面是一些常见的数据类型转换:
INTEGER或INT: 整数类型DECIMAL(p, s)或NUMERIC(p, s): 定点数类型,包含 p 位有效数字和 s 位小数FLOAT(p)或REAL: 浮点数类型,包含 p 位精度DOUBLE PRECISION或DOUBLE或REAL: 双精度浮点数类型DATE: 日期类型TIME: 时间类型DATETIME或TIMESTAMP: 日期时间类型
下面是一个示例,将字符类型的数值转换为整数类型:
SELECT CAST('123' AS INTEGER) AS result;
运行结果如下:
result
------
123
2. CONVERT 函数
在某些数据库系统中,CAST 函数可能无法使用,可以使用 CONVERT 函数来替代。
SELECT CONVERT(data_type, expression) AS result;
其中,data_type 是要转换的目标数据类型,expression 是要转换的表达式。
下面是一个示例,将字符类型的数值转换为整数类型:
SELECT CONVERT(INT, '456') AS result;
运行结果如下:
result
------
456
3. 示例代码
下面我们通过一些示例代码来进一步说明字符转数字的操作。
3.1 示例 1:将字符类型的数值转换为整数类型
假设我们有一个包含订单信息的表 orders,其中有一个列 total_price 存储了订单的总金额,但是该列的数据类型是字符类型。我们需要将它转换为整数类型。
CREATE TABLE orders (
order_id INT PRIMARY KEY,
total_price VARCHAR(10)
);
INSERT INTO orders VALUES
(1, '100'),
(2, '200'),
(3, '300');
现在,我们可以使用 CAST 函数或 CONVERT 函数将 total_price 列的数据类型转换为整数类型。
-- 使用 CAST 函数
SELECT order_id, CAST(total_price AS INTEGER) AS total_price_int
FROM orders;
-- 使用 CONVERT 函数
SELECT order_id, CONVERT(INT, total_price) AS total_price_int
FROM orders;
运行结果如下:
order_id | total_price_int
---------+----------------
1 | 100
2 | 200
3 | 300
3.2 示例 2:将字符类型的数值转换为浮点数类型
假设我们有一个包含员工工资信息的表 employees,其中有一个列 salary 存储了员工的薪水,但是该列的数据类型是字符类型。我们需要将它转换为浮点数类型。
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
salary VARCHAR(10)
);
INSERT INTO employees VALUES
(1, '1000.50'),
(2, '2000.75'),
(3, '3000.60');
现在,我们可以使用 CAST 函数或 CONVERT 函数将 salary 列的数据类型转换为浮点数类型。
-- 使用 CAST 函数
SELECT emp_id, CAST(salary AS DECIMAL(8, 2)) AS salary_float
FROM employees;
-- 使用 CONVERT 函数
SELECT emp_id, CONVERT(DECIMAL(8, 2), salary) AS salary_float
FROM employees;
运行结果如下:
emp_id | salary_float
-------+--------------
1 | 1000.50
2 | 2000.75
3 | 3000.60
3.3 示例 3:将字符类型的日期转换为日期类型
假设我们有一个包含用户注册信息的表 users,其中有一个列 registration_date 存储了用户的注册日期,但是该列的数据类型是字符类型。我们需要将它转换为日期类型。
CREATE TABLE users (
user_id INT PRIMARY KEY,
registration_date VARCHAR(10)
);
INSERT INTO users VALUES
(1, '2021-01-01'),
(2, '2021-02-01'),
(3, '2021-03-01');
现在,我们可以使用 CAST 函数或 CONVERT 函数将 registration_date 列的数据类型转换为日期类型。
-- 使用 CAST 函数
SELECT user_id, CAST(registration_date AS DATE) AS registration_date
FROM users;
-- 使用 CONVERT 函数
SELECT user_id, CONVERT(DATE, registration_date) AS registration_date
FROM users;
运行结果如下:
user_id | registration_date
--------+------------------
1 | 2021-01-01
2 | 2021-02-01
3 | 2021-03-01
4. 小结
本文详细介绍了在 SQL 中如何进行字符转数字的操作。我们可以使用 CAST 函数或 CONVERT 函数来实现该功能,将字符类型的数据转换为目标数据类型。通过示例代码,我们演示了将字符转换为整数、浮点数和日期类型的操作。
极客笔记