一尘不染

动态选择SQL查询中的列

sql

我有一个数据库字段名称调用Code,我正在尝试使用如下所示的变量名称来选择它:

Declare @var1 = [Code]

(SELECT @var1
 FROM [VoucherType]
 WHERE [DeletedBy] IS NULL
 AND [AutoID] = 1)

显然,SQL将解释@var1为字符串,而不是数据库的字段,我如何以这种方式@var1将其识别为字段名[Code]而不是字符串,可能没有任何select或if语句。


阅读 127

收藏
2021-03-10

共1个答案

一尘不染

试试这个:

DECLARE @var1 VARCHAR(20)
DECLARE @sql VARCHAR(255)

SET @var1 = 'Code'
SET @sql = 'select ' + @var1 + ' from [VoucherType] where [DeletedBy] is null and [AutoID] = 1'

EXEC sp_executesql @sql

您必须组成一个动态查询,并使用 sp_executesql

要在事物的“动态”方面添加更多内容,请使用存储过程。请参见此处的示例:

http://www.marten-online.com/database/execute-dynamic-sql-in-
mssql.html

那就是…如果您使用的是Microsoft SQL SERVER

2021-03-10