T-SQL将字段值插入匹配变量值

时间:2017-09-24 15:03:39

标签: sql-server tsql

我知道如何在一个表达式中将几个变量连接在一起但是 我试图重新组装软件从SQL数据库中执行的事件的文本。

关键是文本位置可变,变量并不总是存在,最多可以有10个。

例如,我在字段中出现如下字段。

  • %1已在实体%4上的%3处与%2断开连接。

然后我转到另一个表来查找该远程表中的值并将它们放入单独的字段中并获得看起来像

的输出
  • 字段1:%1已在实体%4上与%2处的%2断开连接。
  • 领域2 (%1):Station1
  • 字段3(%2):Server237
  • 第4场(%3):2017-09-23 23:15:00
  • 字段5(%4):LSAN237

我想知道的是如何在单个字段中汇总,例如以下文字的可变性。

  • “实体LSAN237上的电台1已于2017-09-23 23:15:00与Server237断开连接”。

字段1的文本是高度可变的(超过50k个唯一字符串组合),每条消息中最多包含10个变量。

我不确定它的相关性,但代码相当长,只是为了让变量与事件匹配,但基本上我用事件日志拉with子句,然后选择日志部分和然后为每个变量进行一系列连接和子查询。只是将原始消息重新组装到供应商消息以匹配软件是挑战。

我正在使用SQL 2008 R2。

1 个答案:

答案 0 :(得分:2)

您只想要replace()

select replace(replace(replace(replace(field1, '%1', field2
                                      ), '%2', field3
                              ), '%3', field4
                      ), '%4', field5
               ) as with_replacements
. . .

当我将replace()与通配符一起使用时,我通常使用[1]而不是%1,因为格式不能与%10混淆。