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)