0

誤った SQL ストアド プロシージャで発生した状況があり、現在、データのクリーンアップという困難なタスクに直面している可能性があります。

要するに、データベースにはアポストロフィが何度も繰り返される可能性のあるデータがあるということです。したがって、データは次のようになります。

「コメントです」
「このコメントはOKですが、影響はありません」
「このコメントのテキストには二重のアポストロフィがあります」
「このコメント'''''''''''''''''''''''''''''''''''''''''''''''''''''''' text'''''''''''''''' text''''''''''''''''' text)"

そのため、行 WHERE Comment LIKE '%''''%' を簡単に検索して、誤ったデータを見つけることができますが、これらすべてを一挙に処理できる UPDATE スクリプトを作成する方法はありますか?

私は期待していますが、期待していません。手動で行うのが面倒な作業にならないことを願っていますが、私は心が怠け者です :-)

4

2 に答える 2

0

スタック オーバーフローへようこそ。

クエリを使用してコレクションを見つけ、これらが常に固定長である場合は、不良データを単一の「置換」関数に置き換えます。それ以上のものがある場合は、charindex を使用して、検索して置換するパターンを見つけることができます。通常、一括置換では、自己更新を行いたいときにロジックのテストを行います。

テーブル変数を使用した簡単な例を次に示します。

declare @Table table ( data varchar(32) );

insert into @Table values ('stut""""""'),('stu""""""');

select 
    *
,   replace(data, '""""""', '')
from @Table

update @Table 
set data = replace(data, '""""""', '')

select *
from @Table
于 2012-12-21T23:27:30.997 に答える
0

テキストに Char(0) などの表現されていない文字があると仮定すると、次の擬似コードになります。

UPDATE Yourtable
SET Col = Replace(Replace(Replace("'", Char(0) + "'"), "'" + Char(0), ""), Char(0), "")
WHERE Col LIKE "%''%"

これにより、単一引用符の任意の回数の繰り返しが 1 つに変わります。お使いの DBMS がわからないか、正確な構文を教えてください。

上記の二重引用符は、ほとんどの DBMS では一重引用符でなければならないことを承知しています。

于 2012-12-21T23:41:04.877 に答える