2015-04-17 81 views
0

我有很长的SELECT语句:如何修剪SQL Server中的整个select语句?

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

我如何将能够削减上述所有不写:

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

我很好执行这一无论是在SQL Server或C#如果有更简单的方法?任何创造性的想法,如使用每个循环或类似的东西?

回答

0

取决于所使用的情况下,性能和带宽的考虑,有一件事你可能做的是做它在C#这样的:

你得到查询结果返回到您的代码(可以是一个EF的IQueryable,ADO。 NET DataTable等),并遍历字段,检查给定字段是否为String类型,为此应用.Trim()

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)[email protected])) 
end 

select @stringlistnew stringlistnew 

您可以通过输出查询文本得到Management Studio中列的列表。复制表格标题并粘贴到一个新窗口中,然后搜索并用一个空格替换双空格并重复,直到每列名称之间只有一个空格。然后用逗号替换所有空格。或者你可以修改这个功能来为你做所有这些。 :)

相关问题