我想从动态字符串中获取列,在我的表中:MyTable2我有很多列/字段,它们是: MyVarCharColumnName1,MyVarCharColumnName2,MyVarCharColumnName3,MyVarCharColumnName4 以上这些字段是nvarchar(50), 我想知道如何在与另一个表连接时获得它们的值,如下例所示:
SELECT
*,
CASE
WHEN Tbl1.MyId IN ('1', '2', '3', '4')
THEN (SELECT 'MyVarCharColumnName' + bf.MyId
FROM MyTable2)
ELSE Tbl1.MyId
END AS TheNameofId
FROM
Tbl1
以上是错误的,因为它会将MyVarCharColumnName1作为TheNameofId值而不是MyVarCharColumnName1中的值返回
是否有一些sql函数可以从字符串中返回列名? 任何方式转换' MyVarCharColumnName1'到列对象?
答案 0 :(得分:1)
确认您必须以您提出的方式编写动态查询,但除此之外,我们可以使用CASE
SELECT
*,
CASE
WHEN Tbl1.MyId = 1 THEN MyVarCharColumnName1
WHEN Tbl1.MyId = 2 THEN MyVarCharColumnName2
WHEN Tbl1.MyId = 3 THEN MyVarCharColumnName3
WHEN Tbl1.MyId = 4 THEN MyVarCharColumnName4
ELSE Tbl1.MyId
END AS TheNameofId
FROM Tbl1