我正在尝试更新一组具有重复值的字符串,但我只想更新“第二”组重复值,而不是第一组。该值存储在 SQL Server 数据库的字符串字段中。以下是有问题的字符串:
Standard Activity Note | Type of Recovery: Final | Date of Member Settlement: 12/20/2023 | TPL: 10/06/2023 | UM: | UIM: 12/20/2023 | n/a | Total amount of member settlement: $30,755.00 | TPL: $22,275.00 | UM: | UIM: $8,500.00 | n/a |
Standard Activity Note | Type of Recovery: Final | Date of Member Settlement: 9/13/2023 | TPL: 09/13/2023 | UM: | UIM: | n/a | Total amount of member settlement: $50,000.00 | TPL: $50,000.00 | UM: | UIM: | n/a |
Standard Activity Note | Type of Recovery: Final | Date of Member Settlement: 10/9/2023 | TPL: 10/09/2023 | UM: | UIM: | n/a | Total amount of member settlement: $7,500.00 | TPL: $7,500.00 | UM: | UIM: | n/a |
我试图仅将文本中显示
TPL:
和 UM:
的部分更新为 TPL Amount:
和 UM Amount:
。问题是它在字符串中存在两次,因此如果我运行更新来替换 TPL:
的子字符串,它将更新两者。
关于如何更新 TPL 和 UM 字符串的第二个实例有什么想法吗?绳子里至少有管子,这样可能会有帮助。此外,我需要更新更加动态,因为我有大约 200 行需要更新,并且不能一次只更新一行。
UPDATE dbo.xxx
SET Value = REPLACE(Value, 'TPL:', 'TPL Amount:')
WHERE text_description like '%tpl:%'
UPDATE dbo.xxx
SET Value = REPLACE(Value, 'UM:', 'UM Amount:')
WHERE text_description like '%UM:%'
我相信上面的方法会起作用,但如果两个值存在的话它会更新它们,我只希望它更新字符串中文本的第二次迭代。
您可以使用 CARINDEX 查找第一次出现的 '| 嗯:|' 。然后对从该索引开始 10 个字符的子字符串执行替换。
UPDATE dbo.xxx
SET Value = substring(value, 1, charindex('| UM: |',value) +10) +
REPLACE( REPLACE(substring(value, charindex('| UM: |',value) +10, len(value)-charindex('| UM: |',value) +10),
'UM:',
'UM Amount:'),
'TPL:', 'TPL Amount:'
)