如何通过Select创建空的Integer/Decimal类型列
如何创建Integer/Decimal类型的空列
哈哈,这个坑我踩过!你用NULL AS columnname没生效的核心原因是:大多数SQL数据库没法仅凭一个NULL就推断出你要的是整数/小数类型,默认会给你归到字符串或者不确定类型里。想要创建指定类型的空列,得显式指定数据类型才行,下面分几种常用数据库给你具体写法:
MySQL/MariaDB:使用
CAST()函数将NULL转换为指定数值类型SELECT CAST(NULL AS SIGNED) AS empty_integer_column, -- 整数类型空列 CAST(NULL AS DECIMAL(10,2)) AS empty_decimal_column; -- 小数类型空列(精度10,小数位2)PostgreSQL:可以用
::类型转换符或者CAST()函数SELECT NULL::INTEGER AS empty_integer_column, -- 整数类型空列 CAST(NULL AS NUMERIC(10,2)) AS empty_decimal_column; -- 小数类型空列SQL Server:用
CAST()或CONVERT()函数都可以SELECT CAST(NULL AS INT) AS empty_integer_column, -- 整数类型空列 CONVERT(DECIMAL(10,2), NULL) AS empty_decimal_column; -- 小数类型空列BigQuery:支持直接指定类型后缀,或者用
SAFE_CAST()SELECT NULL INT64 AS empty_integer_column, -- 整数类型空列 SAFE_CAST(NULL AS NUMERIC) AS empty_decimal_column; -- 小数类型空列
简单来说,核心就是告诉数据库:这个空列我要的是整数/小数类型,别自己瞎猜!这样创建出来的空列就会是你想要的数值类型啦。
内容的提问来源于stack exchange,提问作者Prin
相关产品推荐
相关产品推荐

