当前位置: 代码迷 >> Sql Server >> 请教有没有一种方法/或者其他函数可以把select出的结果,所有列一起替换<TAB> 成空格,也就是说不用一列列的做替换
  详细解决方案

请教有没有一种方法/或者其他函数可以把select出的结果,所有列一起替换<TAB> 成空格,也就是说不用一列列的做替换

热度:318   发布时间:2016-04-24 08:59:29.0
请问有没有一种方法/或者其他函数可以把select出的结果,所有列一起替换<TAB> 成空格,也就是说不用一列列的做替换?
view1 里面包含有三百多列,包括各种数据类型,其中若干列的值里包含<TAB>字符。

现在想把所有的列输出,并把输出结果里面的<TAB> 替换成空格。

现在的方法是用Replace 函数,但是好像只能一列一列的替换(并且要确定被替换的列是字符串类型),比如:
select replace([column1], char(9), ''), replace([column2], char(9), ''),... from view1


请问有没有一种方法/或者其他函数可以把select出的结果,所有列一起替换<TAB> 成空格,也就是说不用一列列的做替换?

------解决思路----------------------
用动态SQL遍历所有列,替换就可以了
------解决思路----------------------
DECLARE @SQL VARCHAR(MAX)=''
SELECT @SQL = @SQL +replace(name,char(9),'') +',' FROM sys.columns 
WHERE object_id = OBJECT_ID(N'view1')
PRINT (@SQL)

------解决思路----------------------
DECLARE @SQL VARCHAR(MAX)
SET @SQL=''
SELECT @SQL = @SQL +',replace('+name +',char(9),'''')'+name FROM sys.columns 
WHERE object_id = OBJECT_ID(N'view1')
AND name IN('column1','column2')
SET @SQL='SELECT '+STUFF(@SQL,1,1,'')+' FROM view1'
PRINT (@SQL)
这样?
  相关解决方案