我们在数据库中有一个表,该表有一个名为'fieldName'的列。在fieldName中是另一个表中列的名称。基本上,这是用户可以向表单添加问题的UI的一部分,当发生这种情况时,我们将该信息存储在fieldName中,然后创建一个自定义表,其列名将与一个字段名称匹配。
我想要做的是生成一个动态SQL语句来获取所有fieldNames并将其构建到SQL语句中。到目前为止,我有这个:
DECLARE @CFTable INT
DECLARE @columnNames VARCHAR(8000)
SET @CFTable = 693
SELECT @columnNames = COALESCE(@columnNames + ', ', '') + CONVERT(VARCHAR(25),fieldName )
FROM [FSM_CustomFormColumn]
WHERE CustomFormID = @CFTable
print @columnNames
以上结果是列名,如下所示:
HearAboutEvent, ParticipatedBefore, WeatherDependent, NonRefundable, TransferFee
因此,如果我将所有这些列名存储在@columnNames变量中,那么我想做这样的事情:
select @columnNames from table
这就是我不知道如何工作并需要帮助。
答案 0 :(得分:1)
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'SELECT ' + @ColumnNames + N' FROM TABLE;'
EXEC(@SQL);
CONVERT(VARCHAR(25), fieldName)
,只需使用fieldName
。答案 1 :(得分:0)
你必须使用动态sql来做到这一点。假设MSSQL,你的动态sql将是:
`声明@sql varchar(200),@ column varchar(1)='*'
从<>'
设置@sql ='select'+ @columns +'EXEC(@sql)`
外卖:您可以使用exec(...)函数
执行字符串作为sql