0

Word ドキュメントから抽出された Web ページ全体の HTML を含む HTML フィールドがあります。

この HTML 内には、次のものがあります。

<p>Please refer to &lt;|Any combination of words|&gt; policy.</p>

|との間のすべて|をキャプチャする必要があります。秘訣は、ドキュメント全体に複数あるため、の間|'sだけにする必要があることです。|'sPlease refer to and policy

次に、それを HTML リンクに置き換える必要があります<a href="Any combination of words">Any combination of words</a>

したがって、以下のコードを実行した場合:

<p>Please refer to &lt;|Specific Policy Name|&gt; policy.</p>

これを次のように置き換えます&lt;|Specific Policy Name|&gt;

<a href="Specific Policy Name">Specific Policy Name</a>

これはSQLで可能ですか?

4

1 に答える 1

1

この解決策を試してください:

SET NOCOUNT ON;

DECLARE @MyTable TABLE
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    OldContent NVARCHAR(MAX) NOT NULL,
    NewContent NVARCHAR(MAX) NULL
);
INSERT INTO @MyTable (OldContent)
VALUES (N'<p>Please refer to &lt;|Specific Policy Name&lt;| policy.</p>');

WITH UpdateCTE
AS
(
    SELECT b.NewContent,STUFF(b.InnerText,b.StartIndex-5,b.EndIndex-b.StartIndex+10,'<a href="'+b.[Text]+'">'+b.[Text]+'</a>') AS ChangedText
    FROM
    (
        SELECT  a.*,SUBSTRING(a.InnerText,a.StartIndex,a.EndIndex-a.StartIndex) AS [Text]
        FROM
        (
            SELECT  PATINDEX('%Please refer to &lt;|%',t.OldContent)+21 AS StartIndex,
                    PATINDEX('%&lt;| policy.%',t.OldContent) AS EndIndex,
                    t.OldContent AS InnerText,
                    t.NewContent
            FROM    @MyTable t
        ) a
    ) b
)
UPDATE  UpdateCTE
SET     NewContent = ChangedText;

SELECT  *
FROM    @MyTable x;

結果:

ID  OldContent                                                    NewContent
--- ------------------------------------------------------------- ------------------------------------------------------------------------------------
1   <p>Please refer to &lt;|Specific Policy Name&lt;| policy.</p> <p>Please refer to <a href="Specific Policy Name">Specific Policy Name</a> policy.</p>
于 2013-08-16T19:37:16.927 に答える