我有很长的SELECT语句:如何修剪SQL Server中的整个select语句?
select a, b, c, d, ... etc from tableA;
我如何将能够削减上述所有不写:
select trim(a), trim(b) etc ...
我很好执行这一无论是在SQL Server或C#如果有更简单的方法?任何创造性的想法,如使用每个循环或类似的东西?
我有很长的SELECT语句:如何修剪SQL Server中的整个select语句?
select a, b, c, d, ... etc from tableA;
我如何将能够削减上述所有不写:
select trim(a), trim(b) etc ...
我很好执行这一无论是在SQL Server或C#如果有更简单的方法?任何创造性的想法,如使用每个循环或类似的东西?
取决于所使用的情况下,性能和带宽的考虑,有一件事你可能做的是做它在C#这样的:
你得到查询结果返回到您的代码(可以是一个EF的IQueryable,ADO。 NET DataTable等),并遍历字段,检查给定字段是否为String
类型,为此应用.Trim()
。
建立一个字符串操作函数的工具集,以帮助您完成常做的日常任务。将它们保存为服务器上的过程或函数,或者编写程序并根据需要调用它们以帮助您构建查询。例如包裹所有列在功能:
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中列的列表。复制表格标题并粘贴到一个新窗口中,然后搜索并用一个空格替换双空格并重复,直到每列名称之间只有一个空格。然后用逗号替换所有空格。或者你可以修改这个功能来为你做所有这些。 :)