簡體   English   中英

如何在SQL Server中修剪整個select語句?

[英]How can I trim the entire select statement in SQL Server?

我有一條很長的Select語句:

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

我將如何在不編寫代碼的情況下修剪以上所有內容:

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

如果有更簡單的方法,我可以在SQL Server或C#中很好地實現這一點? 有什么創意,例如為每個循環使用a或類似的東西?

取決於用例,性能和帶寬方面的考慮,您可能要做的一件事就是在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)-@i))
end

select @stringlistnew stringlistnew

通過將查詢輸出到文本,可以從Management Studio獲取列列表。 復制表標題並將其粘貼到新窗口中,然后用一個空格搜索並替換兩個空格,然后重復進行直到每個列名之間只有一個空格為止。 然后用逗號替換所有空格。 或者,您也可以修改此功能以同時為您完成所有操作。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM