2016-12-06 14 views
0

私のデータベースでは、一重引用符をエスケープしてレコードが保存されるたびに倍増する問題がありました。私はこれを今修正しましたが、作成した混乱を取り除く必要があります。SQL Server - 複数のアポストロフィを単一のアポストロフィで置き換えてください

私はアポストロフィ以上のすべてのインスタンスを1つのインスタンスに置き換えるのが最も簡単ではないかと思いました。たとえば、 '' '' ''を 'と置き換えます。

テーブルにはさまざまな数のインスタンスがあります。

+0

サンプルデータと予想される結果を表示できますか? –

答えて

3

は、このトリックは、単一のインスタンスを対応する任意の文字の連続した複数のインスタンスを置き換えるに重宝

UPDATE yourTable 
SET columnName = REPLACE(REPLACE(REPLACE(columnName,'''','<>'),'><',''),'<>','''') 

以下このトリックを試してみてください。私はこれをSOで見つけました。スペース文字の複数のインスタンスを1つのスペースに置き換えました。

+0

非常に危険です。少なくとも代替文字として制御文字を使用します。 –

+0

すばらしかったです。 – Brian

1

これは、単一引用符の多くを必要とする:単一引用符の

update t 
    set col = replace(col, '''''', ''''); 
-----------------------------^^** ^^ 

最初の文字列は、6つの単一引用符があり、二つ目は4を持っています。

^^および**には、一重引用符を表す二重引用符が表示されます。

+0

ありがとうございますが、これは特定の数の引用符でのみ機能しますか?すべてのインスタンスを置き換えるソリューションが必要です。たとえば、 '' 'と' '' '' '' 'の両方を一重引用符に置き換えることができます。 – Brian

+0

これは、2つのシングルクォートを持つ任意の数の発生を置き換えると思います。 replace関数は最初の2個を見つけ、次の2個を見つけ出すより1個を置き換えます。 – GuidoG

+0

@Brian。 。 。私は、シングルクォートでこの問題に直面したときは、2つしか連続していないと思います。 mhasanのソリューションは、任意の数で動作します。 –

関連する問題