0

それぞれ約 50 列の SQL Server テーブルが 15 あります。

これらの列の一部には、引用符、コンマ、およびタブを含む行があります。

列名が指定された行からこれらすべてを削除する機能がありますが、どの列に問題があるかわかりません。

テーブル名に指定された不正なデータを含む列名を返すことができる SQL Server 2005 クエリが必要です。

4

1 に答える 1

4

なんらかの動的 SQL がなければ、これを行うことはできません。これらのフープを飛び越える代わりに、私が通常行っていることは、別のスクリプトを生成するスクリプトを作成することです。

まず、スクリプトの概要:

declare @cols table (name varchar(500))
...
select * from @cols

次に、次のようなクエリを使用して、各列に不適切な値がないかどうかをチェックする一連のステートメントを生成します。

SELECT 'IF EXISTS (SELECT * FROM [' + TABLE_NAME + ']' +
    ' WHERE [' + COLUMN_NAME + '] like ''%,%''' +
    ' or [' + COLUMN_NAME + '] like ''%''''%''' +
    ' or [' + COLUMN_NAME + '] like ''%'' + char(9) + ''%'')' +
    ' insert into @cols values (''' + COLUMN_NAME + ''')'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Tablename' and DATA_TYPE in ('char','varchar')

このクエリを実行し、結果をスクリプトに貼り付けて実行するだけです。一度に複数のテーブルで動作するようにこれを簡単に変更することもできます。

于 2012-04-11T21:53:56.987 に答える