如何在SQL中生成包含N个NULL值的列
SQL生成指定数量NULL值列的实现方案
通用实现(支持PostgreSQL、MySQL 8.0+、SQL Server、Oracle 11gR2+)
使用递归CTE生成指定行数的结果,下方示例为生成10行NULL值,修改WHERE条件中的数字即可调整最终输出的行数:
WITH RECURSIVE null_list AS ( SELECT 1 AS row_num UNION ALL SELECT row_num + 1 FROM null_list WHERE row_num < 10 ) SELECT NULL AS target_column FROM null_list;
不同数据库的简化写法
- PostgreSQL:直接调用
generate_series函数实现,语法更简洁
SELECT NULL AS target_column FROM generate_series(1, 10);
- MySQL 5.x(无递归CTE支持):可以通过UNION拼接临时行,适合少量NULL值场景
-- 示例生成4行NULL值,需要更多行可以追加UNION ALL语句 SELECT NULL AS target_column FROM ( SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) AS temp;
- SQL Server:可借助系统表快速生成大量行,无需递归
-- 示例生成10行NULL值,修改TOP后的数字即可调整行数 SELECT TOP 10 NULL AS target_column FROM sys.columns;
补充说明
如果需要生成多列NULL值,只需在SELECT子句中追加NULL AS 自定义列名,多列之间用逗号分隔即可。
内容的提问来源于stack exchange,提问作者Victor M
相关产品推荐
相关产品推荐

