Sql 有没有办法在Firebird中使用变量引用字段名

Sql 有没有办法在Firebird中使用变量引用字段名,sql,firebird,Sql,Firebird,在Firebird中是否有方法使用变量值引用字段名? 例如,我想使SQL如下所示: Insert into tab1 (1, f1, f2, f3) select 1, tab2.f+var_loop, tab2.f+var_loop, tab2.f+var_loop from tab2 where ..... 其中,“f”是字段名的首字母,“var_loop”是循环变量 要做到这一点,您必须在准备查询之前编写应用程序代码来构建SQL 在SQL中,在准备查询时必须固定列

在Firebird中是否有方法使用变量值引用字段名? 例如,我想使SQL如下所示:

Insert into tab1 (1, f1, f2, f3)
    select 1, tab2.f+var_loop, tab2.f+var_loop, tab2.f+var_loop
    from tab2
    where .....
其中,“f”是字段名的首字母,“var_loop”是循环变量
要做到这一点,您必须在准备查询之前编写应用程序代码来构建SQL

在SQL中,在准备查询时必须固定列名和列数。列名不能基于直到运行时才计算的表达式。据我所知,在标准SQL和所有品牌的RDBMS中都是如此


此外,在执行此操作时,不能在SELECT子句中的列列表周围使用括号。

否,不支持此操作。我想您可以使用实现类似的功能,但是您也可以立即在客户端构建正确的SQL语句,这将更容易…

使用连续编号的列闻起来像是一个非常糟糕的数据库设计。顺便说一句:SELECT的列列表不需要放在括号中。这是一个让人们理解的示例。下次想想我想用你的头而不是你的鼻子做什么!!!前缀和数字的串联将产生列名称,如
some\u name\u 1
some\u name\u 2
some\u name\u 3
。这样的设计闻起来确实有点不规范。如果这不是你所拥有的,那么你应该提供一个更好的(即有意义的)例子。我不知道这是否可能。这只是我要找的东西的一个演示。我只需要在服务器端写一个“服务器端”。在任何情况下,如果您想这样做,您需要执行block.need example请@Welliam,您能否提供一个指向文档的链接或一个使用在查询执行时计算的列名编写SQL的示例?我知道可以在准备时间之前使用动态SQL构建查询。是的,这在任何RDBMS中都是可能的,包括Firebird。但不是RDBMS计算表达式以形成列名。在准备SQL查询之前,应用程序代码会这样做。