4

列のあるテーブルがありdescriptionます。その列にはいくつかのhtmlがあります。

その html はページに渡され、レンダリングされます。ただし、コメントが満たされることもあれば、閉じられないこともあります。このデータを消去する必要があります。

私はそれらを通してそれらを見つけました

select * from table where description like '%<!--%'`  

私はそれが正しくないと思いますが、それをより良くする方法がわかりません。

私の問題の解決策を提案できますか?

編集
ここにいくつかの例があります。

<div class="text"> some data </div>
<ul><!-- Some comment -->
  <li>test</li>
  <li>test2</li> <!-- Some comment
</ul>

よろしく、ドミトリー。

4

2 に答える 2

1

CASE WHEN開始コメント シーケンスの存在と終了コメント シーケンスの非存在を確認し、必要に応じて終了コメントを追加する列を返すために使用します。

SELECT * ,
  CASE WHEN CHARINDEX('<!--', description) > 0
    AND CHARINDEX('-->', description) = 0 
  THEN description + '-->'
  ELSE description
  END AS clean_description
FROM dbo.[table]

または、壊れたコメントを削除したい場合は、

SUBSTRING(description, 0, CHARINDEX('<!--', description))

THENステートメントのブランチ用。

于 2013-06-03T11:11:49.413 に答える