1

vReportText という名前の列を持つ ClinicalDocuments という名前のテーブルがあり、多くのコンポーネントのソープ テキストを保存します。ここで、注文コンポーネントのソープ テキストを含む列 vSoapText を持つ TreatmentOrders という名前の別のテーブルがあります。

臨床文書の ReportText の Order コンポーネントの SOAP テキストを、Treatment Order is の見出しの直後に更新する SP を作成したいと考えています。値を挿入するための見出しの後に正確な位置を決定するために文字列操作が必要になることはわかっていますが、それがどのように正確に可能かはわかりません。

vReportText のサンプル データは次のとおりです。

<table class="tblButton" border="0" cellspacing="0" cellpadding="0" width="100%">
        <tbody>
            <tr>
                <td align="left">
                    <font id="Comp_Heading" class="Comp_Heading" face="arial">&lt;&lt; MD Notes &gt;&gt;</font>
                </td>
            </tr>
            <tr id="traDetail" class="traDetail">
                <td>
                    <label onkeydown="return stopDataEntry()" id="lbl" oncut="" vbscript:window.event.returnvalue="false"
                        ondrop="" vbscript:window.event.returnvalue="false" ondblclick="lblDbl_Click('btn~~52437s80')"
                        contenteditable="false" onpaste="" vbscript:window.event.returnvalue="false"
                        ondrag="" vbscript:window.event.returnvalue="false">
                        <font id="Comp_Heading_Detail" class="Comp_Heading_Detail" face="arial"></font>
                    </label>
                </td>
            </tr>
        </tbody>
    </table>

vSoapText 列には、文字列の html スクリプトも含まれています。今、vsoaptext 列の値をフォント タグComp_Heading_Detailに挿入したいと考えています。

私たちのアプリケーションは、私もよく知らない古典的なASPで構築されていたので、便利なスクリプトでこれを行うことができれば、私の人生は楽になると思いました。ご回答ありがとうございます。

4

1 に答える 1

1

REPLACE文字列関数でオプションを使用できます

このスキーマを持つ 2 つのテーブルがあるとします。

CREATE TABLE dbo.TreatmentOrders
 (
  Id int,
  vSoapText nvarchar(100)
  )

INSERT dbo.TreatmentOrders
VALUES(1, 'InsertedText1'),
      (2, 'InsertedText2')

CREATE TABLE dbo.ClinicalDocuments
 (
  Id int,
  TreatmentOrdersId int,  
  vReportText nvarchar(100)
  )

INSERT dbo.ClinicalDocuments
VALUES(1, 1, '123 Treatment Order is 123'),
      (2, 1, '12345 Treatment Order is 123'), 
      (3, 2, '123 Treatment Order is 123'),
      (4, 2, '12345 Treatment Order is 123')

UPDATE d
SET d.vReportText = 
  REPLACE(vReportText,'Treatment Order is','Treatment Order is ' + o.vSoapText)
FROM dbo.ClinicalDocuments d 
  JOIN dbo.TreatmentOrders o ON d.TreatmentOrdersId = o.Id

Id  TreatmentOrdersId vReportText
1   1                 123 Treatment Order is 123
2   1                 12345 Treatment Order is 123
3   2                 123 Treatment Order is 123
4   2                 12345 Treatment Order is 123

Id  TreatmentOrdersId vReportText   
1   1                 123 Treatment Order is InsertedText1 123
2   1                 12345 Treatment Order is InsertedText1 123
3   2                 123 Treatment Order is InsertedText2 123
4   2                 12345 Treatment Order is InsertedText2 123

SQLFiddle のデモ

テキスト「Comp_Heading_Detail」の更新場所には、これを使用します

UPDATE d
SET d.vReportText =
  REPLACE(vReportText, 'font id="Comp_Heading_Detail"', 'font id="' + o.vSoapText+ '"')
FROM dbo.ClinicalDocuments d 
  JOIN dbo.TreatmentOrders o ON d.TreatmentOrdersId = o.Id
于 2013-04-04T09:39:27.240 に答える