我有一个很长的Select语句:
select a, b, c, d, ... etc from tableA;
如何在不写作的情况下修剪上述所有内容:
select trim(a), trim(b) etc ...
如果有更简单的方法,我可以在SQL Server或C#中实现它吗?任何创意,例如为每个循环使用a或类似的东西?
答案 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中的列列表。复制表头并粘贴到一个新窗口中,搜索并用一个空格替换双空格并重复,直到每个列名之间只有一个空格。然后用逗号替换所有空格。或者您可以修改此功能以便为您完成所有这些操作。 :)