如何根据其他表中的字段串联动态设置 SQL 字段名称?
Posted
技术标签:
【中文标题】如何根据其他表中的字段串联动态设置 SQL 字段名称?【英文标题】:How can you dynamically set a SQL field name based on a concatenation of fields from other tables? 【发布时间】:2012-07-20 06:39:59 【问题描述】:我有两张桌子。 projects表中的字段名存储在fieldname表中
项目表
RecordID, ProjectID, Field1, Field2, Field3, Field4,...,Field20
字段名称表
FieldNameID、ProjectID、FieldNumber、FieldName
是否可以从字段名称实际上是 FieldNames.FieldName 的 Projects 表中返回结果?您可以连接 'Field'+FieldNames.FieldNumber 以返回 Fieldname,然后将其用作 Projects 中 Field(x) 的别名吗?
即:而不是“Field1”,它将是 FieldNames.FieldName 其中 Projects.ProjectID=FieldNames.ProjectNames 和 FieldNumber=1
【问题讨论】:
【参考方案1】:您可以使用动态 SQL 或将值映射到字段的大型 case 语句来做到这一点,或者通过创建一个包含每个组合的视图并在 where 子句中使用适当的代码来获取正确的行。
但是,在我看来,你完全走错了路,在没有可怕警告的情况下帮助你走得更远是完全不负责任的。所以这里是:
您使用的数据库设计是一种非常糟糕的设计反模式,并且以一种特别臭的方式违反了最佳实践(例如“代码异味”,您有“数据库异味”)。不要将列名存储在列中。这是错误的。会疼的。它会让你的数据库变得邪恶。专业人士会偷偷地大声嘲笑它。我是认真的。
【讨论】:
以上是关于如何根据其他表中的字段串联动态设置 SQL 字段名称?的主要内容,如果未能解决你的问题,请参考以下文章