【问题标题】:Replace template smart tags <<tag>> to [tag] in mysql将模板智能标签 <<tag>> 替换为 mysql 中的 [tag]
【发布时间】:2019-04-17 01:45:16
【问题描述】:

我有一个表名 templateType,它有一个列名 Template_Text。 模板有很多智能标签 到 [tag] 使用 mysql,我需要将 > 替换为 ]。

从 OP 的 cmets 编辑:

这是一个带有大文本和多个智能标签的模板。例如:" I &lt;&lt;Fname&gt;&gt; &lt;&lt;Lname&gt;&gt;, &lt;&lt;UserId&gt;&gt; &lt;&lt;Designation&gt;&gt; of xyz organization, Proud to announce...."

这里我需要将这些 > 替换为 ],所以它看起来像

" [Fname] [Lname], [UserId] ...." 

【问题讨论】:

  • @MadhurBhaiya,它是一个带有大文本和多个智能标签的模板。例如:“我 > >, > > of xyz 组织,自豪地宣布....” 这里我需要将这些 > 使用 ],所以它看起来像“ [Fname] [Lname], [UserId] ....”
  • 另外,你的 MySQL 服务器版本是多少?如果你有最新版本(8.0及以上),可以使用Regex_Replace()函数。
  • 如果版本较旧,您可以查看这个答案:stackoverflow.com/a/53286571/2469308
  • @MadhurBhaiya 是的,我有旧版本的 mysql,那个例子很好,但它只适用于单个值,我有多个智能标签。

标签: mysql replace


【解决方案1】:

根据您的 cmets,您的 MySQL 版本不支持Regex_Replace() 函数。因此,通用的解决方案是不可行的。

假设你的字符串不包含额外的&lt;&lt;&gt;&gt;,除了遵循&lt;&lt;%&gt;&gt;的格式,我们可以使用Replace()函数。

我还添加了WHERE 条件,以便我们只选择符合给定子字符串条件的行。

Update templateType
SET Template_Text = REPLACE(REPLACE(Template_Text, '<<', '['), '>>', ']')
WHERE Template_Text LIKE '%<<%>>%'

如果问题更复杂,您可能会从这个答案中得到一些想法:https://stackoverflow.com/a/53286571/2469308

【讨论】:

    【解决方案2】:

    几个replace 调用应该可以工作:

    SELECT REPLACE(REPLACE(template_text, '<<', '['), '>>', '])
    FROM   template_type
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2015-10-31
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多