我想使用以下代码从表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
答案 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。