FireDac添加下划线1以区分具有相同名称的2个列名称

时间:2016-11-01 10:25:14

标签: sql delphi firedac

我有一个select连接2个表,因此这些表中有相似名称的列,所以现在检索结果时FireDac将下划线1添加到第2列名称以区分2

Select * from Table1 inner join Table2 on 
Table1.id = Table2.id

当从具有相似名称的字段获取记录时,我将不得不这样做......

Dataset.FieldByName('Name').asInteger
Dataset.FieldByName('Name_1').asInteger

我想知道是否有设置将_1更改为其他内容,因为我想要更改这是因为我们以前使用的Interbase只添加了1。

2 个答案:

答案 0 :(得分:1)

我不知道这样的配置。我唯一能想到的选择就是不使用SELECT *,而是选择实际所需的列,并为相同的列名添加别名,例如

SELECT Table1.Name, Table2.Name AS Name1, ... from Table1 inner join Table2 on 
Table1.id = Table2.id

或者,如果您需要Table1中的所有列,并且您必须使用SELECT *,您可以使用:

SELECT Table1.*, Table2.Name AS Name1, ...

另请参阅:Why is “Select * from table” considered bad practice

答案 1 :(得分:0)

请勿使用select * from。命名要获取的列,为它们定义别名并使用它们的表名(或它们的别名)来创建唯一的名称。

select t1.Name as Name1, t2.Name as Name2 from Table1 t1 inner join Table2 t2 on t1.Name = t2.Name

您现在可以通过这种方式获取他们的价值

Dataset.FieldByName('Name1').asInteger;