2016-09-28 4 views
0

のすべての列に置き換える適用されます。私は1つのフィールドに何かを交換する方法を知っているSQL Serverクエリ

Select Replace(Clmn1, char(9), ' ') as Clmn1 
From TableA 

は今、私は、テーブルのすべての列にステートメントを置き換えるに適用したいと思います。それを行う簡単な方法はありますか?

+0

おそらく同じように簡単で短くnはsys.tablesとsys.columns、joinなどを見ています。 – scsimon

答えて

0

申し訳ありませんが、そこには近道がここに(動的SQLの短い、しかし、あなたはそれをやりたいいけない!)ません

Select Replace(Clmn1, char(9), ' ') as Clmn1, 
     Replace(Clmn2, char(9), ' ') as Clmn2, 
     Replace(Clmn3, char(9), ' ') as Clmn3 
From TableA 

これはあなたが頻繁に行う何かがある場合は、ユーザー定義関数を、書くことができただろう少しあなたの声明

Select dbo.CleanChar9(Clmn1) as Clmn1, 
     dbo.CleanChar9(Clmn2) as Clmn2, 
     dbo.CleanChar9(Clmn3) as Clmn3 
From TableA 

各columのためにそれを繰り返す

CREATE FUNCTION dbo.CleanChar9(@val NVARCHAR(MAX)) -- use the appropriate type 
AS 
BEGIN 
    RETURN REPLACE(@val,CHAR(9), ' '); 
END 
+0

スカラー関数はパフォーマンスにとって恐ろしいものです。これは、すべての行のすべての列に対してスカラー関数を呼び出すことになります。ああ。 –

+0

@SeanLangeはい、そうです。私はこれを書いていると思っていた。私はおそらくそれを言及していたはずです。 – Jamiec

関連する問題