如何修剪SQL Server中的整个select语句?

时间:2015-04-17 00:15:02

标签: c# asp.net sql-server

我有一个很长的Select语句:

select a, b,  c, d, ... etc from tableA;

如何在不写作的情况下修剪上述所有内容:

select trim(a), trim(b) etc ... 

如果有更简单的方法,我可以在SQL Server或C#中实现它吗?任何创意,例如为每个循环使用a或类似的东西?

2 个答案:

答案 0 :(得分:0)

取决于用例,性能和带宽注意事项,你可能做的一件事就是在C#中这样做:

您将查询结果返回到您的代码(无论是EF IQueryable,ADO.NET DataTable等),然后遍历这些字段,检查给定字段是否为String类型,你申请.Trim()

答案 1 :(得分:0)

构建一个字符串操作函数工具集,以帮助您执行经常执行的平凡任务。将它们保存为服务器上的过程或函数,或编写程序并根据需要调用它们以帮助您构建查询。例如,将所有列包装在函数中:

declare @stringlist as varchar(max)
declare @stringlistnew as varchar(max)
declare @wrapstart as varchar(max)
declare @wrapend as varchar(max)

set @stringlist = 'a, b, c, d, e, f, g, h, i'
set @wrapstart = 'ltrim(rtrim('
set @wrapend = ')) '

declare @i as int
set @i=0
set @stringlist = ltrim(@stringlist) + ','

while LEN(@stringlist) > 1
begin
    set @i=charindex(',',@stringlist)
    set @stringlistnew = case when ISNULL(@stringlistnew, '') = '' then '' else @stringlistnew + ', ' end
    set @stringlistnew = @stringlistnew + @wrapstart + ltrim(rtrim(LEFT(@stringlist,@i-1))) + @wrapend + ltrim(rtrim(LEFT(@stringlist,@i-1)))
    set @stringlist = ltrim(RIGHT(@stringlist, len(@stringlist)-@i))
end

select @stringlistnew stringlistnew

您可以通过向文本输出查询来获取management studio中的列列表。复制表头并粘贴到一个新窗口中,搜索并用一个空格替换双空格并重复,直到每个列名之间只有一个空格。然后用逗号替换所有空格。或者您可以修改此功能以便为您完成所有这些操作。 :)