如何在SQL Server管理工作室中使用表提取数据

时间:2013-10-23 18:15:22

标签: sql sql-server sql-server-2008-r2

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

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

2 个答案:

答案 0 :(得分:0)

认为这就是你的意思......

select @strs = name from companies where ...

答案 1 :(得分:0)

除非我完全关闭...你希望'动态'选择基于变量输入的列。如果是这样,那么您正在寻找动态SQL。这可能是一个安全循环漏洞,因此最好是对动态SQL所需的内容进行一些阅读。相对简单,您在变量中构建SQL语句然后执行变量(这很危险,因为我可以将变量构建为sql代码并作为SQL注入攻击针对您的服务器执行)。

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

只要@strs是一个包含正确逗号分隔列的列表,这应该可行。

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