如何在SELECT查询中将指定列的数据类型从text转为number
SQL查询中TEXT转NUMBER的实现方案
根据你使用的数据库类型,选择对应的转换函数修改查询语句即可,以下是常见数据库的处理方式:
MySQL/MariaDB
使用CAST()或CONVERT()函数将文本转为数字类型,示例:
SELECT "customers"."id", "customers"."name", CAST("customers"."Antal beregninger" AS UNSIGNED) AS "Antal beregninger", -- 转为无符号整数,也可替换为DECIMAL(10,2)等小数类型 "customers"."Status", "Afgiftsberegner - Antal beregninger pr. Forhandler - SQL"."count(id)" FROM "customers"
PostgreSQL
使用类型转换运算符::或CAST()函数,示例:
SELECT "customers"."id", "customers"."name", "customers"."Antal beregninger"::INTEGER AS "Antal beregninger", -- 转为整数,也可替换为NUMERIC(10,2)等小数类型 "customers"."Status", "Afgiftsberegner - Antal beregninger pr. Forhandler - SQL"."count(id)" FROM "customers"
SQL Server
使用CAST()或CONVERT()函数,示例:
SELECT "customers"."id", "customers"."name", CAST("customers"."Antal beregninger" AS INT) AS "Antal beregninger", -- 转为整数,也可替换为DECIMAL(10,2)等小数类型 "customers"."Status", "Afgiftsberegner - Antal beregninger pr. Forhandler - SQL"."count(id)" FROM "customers"
Oracle
使用TO_NUMBER()函数,示例:
SELECT "customers"."id", "customers"."name", TO_NUMBER("customers"."Antal beregninger") AS "Antal beregninger", "customers"."Status", "Afgiftsberegner - Antal beregninger pr. Forhandler - SQL"."count(id)" FROM "customers"
注意事项
- 如果目标文本列包含非数字字符,转换会直接报错。可以结合条件函数过滤无效值,比如MySQL中用
IF(REGEXP_LIKE("Antal beregninger", '^[0-9]+$'), CAST(...), NULL),将非数字内容转为NULL。 - 根据实际业务需求选择合适的数字类型(整数、小数等),避免精度丢失。
内容的提问来源于stack exchange,提问作者Christian Helmann
相关产品推荐
相关产品推荐

