-2

我想使用以下代码从表中获取结果companies。如何将变量的值设置@strs为指向表的namecompanies

declare @strs nvarchar(max)
set @strs = 'I want to pass table data here' // I want to pass table data here
set @strs = reverse(@strs)
select reverse(@strs) String,
reverse(right(@strs,len(@strs) - charindex(' ',@strs,30))) Description1,
ltrim(reverse(left(@strs,charindex(' ',@strs,30)))) Description2
4

2 回答 2

0

除非我完全离开......您正在寻找基于变量输入的“动态”选择列。如果这是真的,那么您正在寻找动态 SQL。这可能是一个安全漏洞,因此最好阅读一下动态 SQL 的含义。相对简单,您在变量中构建 SQL 语句,然后执行该变量(这很危险,因为我可以将变量构建为 sql 代码并作为 SQL 注入攻击对您的服务器执行)。

set @sql = 'select ' + @strs + 'from table'
exec @sql

只要@strs 是用适当的逗号分隔它们的列列表,这应该可以工作。

我需要问你为什么要这样做......这个级别的列选择通常最好在你向用户呈现结果的 GUI 中完成......你可能想重新考虑为什么你认为这是必要的.

于 2013-10-23T18:39:03.273 回答
0

这就是你的意思...

select @strs = name from companies where ...
于 2013-10-23T18:19:36.043 回答