1

我有一个名为 ClinicalDocuments 的表,其中有一个名为 vReportText 的列,它保存了许多组件的肥皂文本。现在有另一个名为 TreatmentOrders 的表,其列 vSoapText 包含订单组件的肥皂文本。

我想编写一个 SP,它会在治疗订单的标题之后更新临床文档的 ReportText 中订单组件的肥皂文本。我知道这将涉及一些字符串操作来确定在插入值之后的确切位置,但我无法弄清楚它到底有多可能。

这是 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 脚本,现在我想在字体标签Comp_Heading_Detail中插入 vsoaptext 列值。

我们的应用程序是用经典的 asp 构建的,我也不太了解,所以我想如果我可以用一些方便的脚本来做到这一点,它会让我的生活变得轻松。非常感谢您的回复。

4

1 回答 1

1

您可以将选项与REPLACE字符串函数一起使用

假设您有两个具有此模式的表

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 回答