You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebird SQL Select结果集中添加指定数量的空行

在Firebird SQL查询结果前添加12个空行的正确做法

先分析你两次尝试的问题

  • 第一次尝试错误原因:
    你用UNION ALL关联SELECT null... FROM table,这条语句会返回与原表总记录数一致的空行——因为它是从原表逐行生成null结果,而不是生成固定行数的空行。

  • 第二次尝试错误原因:
    改用UNION后,由于所有null行的内容完全重复,UNION会自动去重合并,最终只保留1行空行,无法达到添加12行的需求。

正确实现方式

要生成固定12行空行,需要基于单数据源生成多行,Firebird可以用递归CTE或者重复查询系统表RDB$DATABASE(该表固定只有1行)来实现:

方法1:递归CTE(推荐,可灵活调整行数)

WITH empty_rows(n) AS (
    SELECT 1 FROM RDB$DATABASE
    UNION ALL
    SELECT n + 1 FROM empty_rows WHERE n < 12
)
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM empty_rows
UNION ALL
SELECT * FROM table WHERE id LIKE 'R%'

通过递归生成1到12的序列,再基于这个序列输出12行null值,最后用UNION ALL拼接目标查询结果。

方法2:重复查询系统表(简单直接)

-- 连续写12次SELECT null... FROM RDB$DATABASE
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
UNION ALL
SELECT null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM RDB$DATABASE
-- 拼接目标查询
UNION ALL
SELECT * FROM table WHERE id LIKE 'R%'

利用RDB$DATABASE仅1行的特性,每次查询生成1行空行,12次UNION ALL即可得到12行空行,再拼接目标结果。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:34:57