【问题标题】:Add data behind string based on data in other column in SQL Server根据 SQL Server 中其他列中的数据在字符串后面添加数据
【发布时间】:2021-01-30 21:03:52
【问题描述】:

我目前无法解决以下挑战:

我在包含 HTML 数据的表“数据”中有一个列 (LongTextfield1)。表格“数据”中的每一行基本上是一个带有文本和图片的文档。在某些情况下,同一列 (LongTextfield1) 中包含多张图片。如果是图片,将显示以下引用图片的代码:

\Download.aspx?DocumentID={SomeGUID}

为了使其更具挑战性,这段代码可以多次包含在同一列中,具体取决于 HTML(文档)中包含多少图片。所有图片都有自己的 GUID。到目前为止,一切都很好。这已经存在于列中。

在我想显示这些图片的应用程序中,我还需要一个“RecordID”。这是每张图片的唯一 ID。所以,结果应该是:

\Download.aspx?DocumentID={SomeGUID}&Recorid=SomeID

我有一个表“DocumentData”,其中包含每张图片的唯一 GUID (DocumentID) 和 RecordID。所以,我知道哪个 RecordID 属于每个 GUID。

我需要一个将 RecordID 添加到相应 GUID 后面的存储过程(或其他自动机制)。我曾尝试对 {SomeGUID}&RecorID=SomeID' 使用 REPLACE '{SomeGUID}' ,但这没有用。下面是存储过程,它由“DocumentData”表中的数据提供。它不断用每个可能的 GUID+RecordID 组合替换相同的字符串: (DocumentID={SomeGUID}&RecordID=1{SomeGUID2}&RecordID2.. 等等,这不是我想要的。@DocumentID 和 @Origin (RecorID) 在存储程序参考'DocumentData'表:

CREATE PROCEDURE [dbo].[Replace_Picture2] (
@DocumentID UNIQUEIDENTIFIER,
@Origin varchar(100)
) AS

BEGIN

update
data
set longtextfield1 = REPLACE(CAST(LongTextField1 AS VARCHAR(max)), ltrim(cast(@DocumentID as varchar(100))) + '}', ltrim(cast(@DocumentID as varchar(100))) + '}' + '&RecordID=' + @Origin + '"')
where 1=1
and pageid = 1
and groupid = 2
and subgroupid = 8

END

GO

如何根据表“DocumentData”中的组合在 DocumentID 后面添加 RecordID?感谢您的帮助!

【问题讨论】:

    标签: sql sql-server stored-procedures replace sql-update


    【解决方案1】:

    这可以通过替换“@DocumentID”+“}”来解决(注意“}”而不是“}”。这可以防止存储过程继续替换和替换。

    【讨论】:

      猜你喜欢
      • 2020-08-25
      • 2021-11-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多