如何去除整数列的最后三位?SQL查询实现方案咨询
解决整数列去除最后三位的SQL查询方法
针对HR_table表中number_of_people整数列需要去除最后三位的需求,提供两种可行方案:
方案一:字符串转换适配LEFT函数
由于LEFT仅支持字符串类型,先将整数列转换为字符串,截取前N-3位后可按需转回整数:
不同数据库写法示例:
- SQL Server:
SELECT CAST(LEFT(CAST(number_of_people AS VARCHAR), LEN(CAST(number_of_people AS VARCHAR)) - 3) AS INT) AS EditedColumn FROM HR_table LIMIT 15; - MySQL:
SELECT CAST(LEFT(CAST(number_of_people AS CHAR), LENGTH(CAST(number_of_people AS CHAR)) - 3) AS UNSIGNED) AS EditedColumn FROM HR_table LIMIT 15; - PostgreSQL:
SELECT CAST(LEFT(CAST(number_of_people AS TEXT), LENGTH(CAST(number_of_people AS TEXT)) - 3) AS INTEGER) AS EditedColumn FROM HR_table LIMIT 15;
方案二:数学整除运算(更高效)
利用整数整除1000的特性直接去掉最后三位,无需字符串转换,性能更优:
通用及分库写法:
- 通用写法(多数数据库兼容):
SELECT FLOOR(number_of_people / 1000) AS EditedColumn FROM HR_table LIMIT 15; - MySQL 专用整除语法:
SELECT number_of_people DIV 1000 AS EditedColumn FROM HR_table LIMIT 15; - SQL Server 整数除法:
SELECT number_of_people / 1000 AS EditedColumn FROM HR_table LIMIT 15;
两种方案对比:字符串转换法适合需处理特殊格式的场景,数学运算法则更高效,且结果直接为整数类型,更贴合原列数据特性。
内容的提问来源于stack exchange,提问作者Yuri Rolimus
相关产品推荐
相关产品推荐

