如何根据其他表中的字段串联动态设置SQL字段名称?

时间:2012-07-20 06:39:59

标签: sql dynamic alias

我有两张桌子。项目表中的字段名称存储在fieldname表

项目表

RecordID, ProjectID, Field1, Field2, Field3, Field4,...,Field20

FieldNames表

FieldNameID, ProjectID, FieldNumber, FieldName

是否可以从Projects表返回结果,其中字段名称实际上是FieldNames.FieldName?你能连接'Field'+ FieldNames.FieldNumber来返回Fieldname,然后用它作为Projects中的Field(x)的别名吗?

,即:而不是“Field1”,它将是FieldNames.FieldName,其中Projects.ProjectID = FieldNames.ProjectNames和FieldNumber = 1

1 个答案:

答案 0 :(得分:1)

您可以使用动态SQL或将值映射到字段的大型case语句,或者通过创建包含每个组合的视图,并使用where子句中的相应代码来获取正确的行来执行此操作。

然而,在我看来,你完全走错了路,并且在没有严重警告的情况下帮助你走得更远将是完全不负责任的。所以这里:

您正在使用的数据库设计是一个非常糟糕的设计反模式,并且以特别臭的方式违反了最佳实践(例如“代码味道”,您有“数据库气味”)。不要将列名存储在列中。这是错误的。会受伤。它会让你的数据库变得邪恶。专业人士将秘密而大声地嘲笑它。我非常认真。

相关问题