0

データが解析されたデータベースがあります。解析中に、アンパサンドとセミコロンが削除され、HTMLエンティティの束が台無しになりました。

たとえば、次のようにデータが保存されています。

#7779avaf#299

どちらにする必要があります:

ṣavafī

私はこれらのいくつかを次のように置き換え始めました:

REPLACE ( FIELD1, '#7779' , 'ṣ' )

ただし、エンティティごとに新しい置換を作成する必要があります。私は正規表現があまり得意ではありません。#の後に3桁または4桁の数字を続けて、&#の後に同じ3桁または4桁の数字を続けてセミコロンで置き換える、考えられるすべての組み合わせを一致させる方法はありますか?

4

2 に答える 2

0

一致するすべてのターゲット テキストを抽出する正規表現を次に示します。

(#\d{3,4})

REPLACE次に、生成されるリストを使用してステートメントを生成するか、正規表現エンジンのバックトラッキング機能を使用して一致したグループを動的にラップする構文を理解することができます。&;

T-SQL 正規表現ワークベンチには、上記のような正規表現の使用方法SELECTの例がいくつかあります。方法だけでREPLACEなく。

于 2012-04-30T16:39:10.017 に答える
0

すべての # が特定のフィールドの HTML エンティティに属することを保証できる場合は、次のようにすることができます。

UPDATE myTable SET [FIELD1] = REPLACE(FIELD1, '#', '&#')
UPDATE myTable SET [FIELD1] = STUFF(FIELD1, (CHARINDEX(FIELD1, '#') + 5), 0, ';')

そうでない場合は、SQL がネイティブでサポートしていないため、おそらく REGEX 一致用の CLR 関数を作成する必要があります。

于 2012-04-30T16:46:47.207 に答える