0

私はこのサンプルテーブルを持っています:

表1

Column1
-------
Hi&Hello
Hello & Hi
Snacks & Drinks
   Hello World  

質問: SQL Server で、既存の文字エンティティに影響を与えずにすべて&を文字エンティティ ( )に置き換えるにはどうすればよいですか?&

ありがとう!

4

3 に答える 3

0
  1. データベースで本当に置き換えたい場合は、実行してみてください
    UPDATE Table1 SET Column1 = REPLACE(Column1, '&', '&');
  1. データベースとまったく同じ方法でサイトにデータを表示したいので、これを行いたいと思います。したがって、(アプリケーション側で) 表示するときはエスケープすることをお勧めします。これは、データベースにたくさんある&場合や データベースにある場合は維持するのが容易ではないためです。

例えば:

PHPでは、使用できますhtmlspecialchars();

Javaでは、次のことができimport static org.apache.commons.lang.StringEscapeUtils.escapeHtml;ますescapeHtml();

ruby on rails では使えるHTMLEntities.new.encode();(rails3以降ならデフォルトでエスケープされるはず)。

于 2014-12-09T02:18:13.927 に答える
0

あなたが尋ねている理由は、それがあなたが持っている文字エンティティだけではないからだと思います.5または6以上だと思います.それがそれほど小さい数である場合、簡単な答えは文字エンティティごとに更新ステートメントを実行することです.先頭のアンパサンドを、列に存在しない文字の組み合わせ (例: |#|#|#) に置き換えます。これには、とりわけ部分文字列が必要です。次に、すべてのアンパサンドを & に更新します。次に、特別な文字の組み合わせをアンパサンドに置き換えて、別の update ステートメントを実行します。あなたは終わった。

より異なる文字セットであると仮定すると、これは 1 回限りのクリーンアップですか? そうでない場合、それが進行中であると予想される場合、システムがアンパサンドを単なるアンパサンドとして保存し、他のものを文字エンティティとして保存するのはなぜですか? 最初にその問題に取り組みます。それを制御できない場合でも、私のソリューションは機能する可能性がありますが、さらに最適化する必要があります。

1 回限りのクリーンアップの場合は、データベースにあると考えられるすべての文字エンティティのリストを含む、一時的に使用するためのテーブルを作成する必要があると思います。HTML 文字エンティティをググると、切り取りと貼り付けを使用して 30 分以内にこのテーブルを生成できる可能性が高いリストを見つけることができます。

この表があれば、道はかなり明確です。他の人が言ったように、おそらくこのようにエンコードされたデータをDBに保存したくないでしょう。その場合は、カーソルを作成し、文字エンティティの新しいテーブルをループして、replace ステートメントで更新を行うだけです。ただし、アンパサンドのみを本当に置き換えたい場合は、代わりにカーソルをループし、すべての文字エンティティの先頭にあるアンパサンドを、列に存在することのない文字の組み合わせに置き換えます。それ以外の場合は |#|#|# のように実例。その後、DB に残る唯一のアンパサンドは、文字エンティティの一部ではなく、実際のアンパサンドでなければなりません。したがって、最初の段落で述べた最後の 2 つの手順と同じです。単一のクエリを実行して、すべてのアンパサンドを & に更新します。

于 2014-12-09T03:15:06.450 に答える