2016-11-03 10 views
1

私はSSMS 2016 txtファイル(コンマ区切りの "テキスト修飾子")にインポートしますが、テキスト内には多くの "が混乱しています。TSQLトリムカラム/テーブル

私はこれをカンマ区切りでのみインポートしました。エラーは表示されません。 列(複数可)の例のようになります。これをクリーンアップするためにそれらを使用し

"Ab-123-2  " 
"wheel 17" " 
"hello "world"  " 

は:

UPDATE table1 
SET [Column 1] = STUFF([Column 1], 1, 1, '') 
WHERE [Column 1] LIKE '"%' 

UPDATE table1 
SET [Column 1] = REVERSE(STUFF(REVERSE([Column 11]), 1, 1, '')) 
WHERE [Column 1] LIKE '%"' 

これはうまく動作しているようです。列の各行には、「最初と最後削除すると、1つの

私の質問は、この表では、私は約40の列を持っている、(すべての列1-40)テーブル全体に対してこれを実行する方法はありますか?

私は手動で[Column 1]から[Column 2]、[Column 3]などに変更することができますが、年を取るので、今後数回これを繰り返す必要があります。

しかし、 1ヒットでこれをすべて行う方法

ありがとう

+1

、動的SQL、から選択された列名の上にあなたのループであるはずテーブルスキーマを作成し、一連の 'UPDATE'文を文字列に作成し、' EXECUTE'を実行してください。 – dlatikay

+0

@dlatikayが言ったことと、テーブルスキーマを使って40個以上の更新ステートメントのスクリプトを生成します。 –

+0

素早く答えてくれてありがとう:) 私はまだTSQLの初心者です。このスクリプトは、私がここに見つけたものの「リメイク」です。 これが何を意味するのかわかりませんが、書く方法、探している方法、グーグルでこれを行う方法 – hyprex

答えて

0

Afte Rあなたはこの

UPDATE Table1 
SET Column1 = RTRIM(LTRIM(REPLACE(Column1,'"',''))), 
    Column2 = RTRIM(LTRIM(REPLACE(Column2,'"',''))), 
    ..., 
    ColumnN - RTRIM(LTRIM(REPLACE(ColumnN,'"',''))) 
WHERE... 

を使用することができますテーブルにデータを引っ張って、私は40列のためにそれを行うには、もう少し課税ですが、それは、動的SQLを使用するよりも簡単ですし、あなただけのペーストをコピーしたり、行うことができます実現しますそれをすばやく行うための置き換え。あなたは、次のようなあなたのUPDATEクエリを作成するために、動的SQLを使用することができます

+0

引用符( '' ')はどうやって削除されますか? – HABO

+0

@HABO引用を取り除くために編集しました –

0

:この例では

は、私はそのテーブル名がcompute_node

 DECLARE @QUERY as VARCHAR(MAX) 
     DECLARE @TABLENAME AS VARCHAR(50) 

     SET @TABLENAME = 'compute_node' 
     SET @QUERY = 'UPDATE [' + @TABLENAME + '] SET ' 

     SELECT @QUERY = @QUERY + '[' + COLUMN_NAME + '] = LTRIM(RTRIM(REPLACE([' + COLUMN_NAME + '],''"'',''''))) ,' 
     FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TABLENAME 

     SELECT @QUERY = SUBSTRING(@QUERY, 1 , LEN(@QUERY) - 1) 

     EXEC (@QUERY)