当前位置: 首页 > 面试题库 >

使用通配符替换的MySQL

杜焕
2023-03-14
问题内容

我正在尝试编写SQL更新,以使用新字符串替换特定的xml节点:

UPDATE table
SET Configuration = REPLACE(Configuration,
     "<tag>%%ANY_VALUE%%</tag>"
     "<tag>NEW_DATA</tag>");

以便

<root><tag>SDADAS</tag></root>

变成

<root><tag>NEW_DATA</tag></root>

这种类型的请求缺少语法吗?


问题答案:

更新:MySQL
8.0具有功能REGEX_REPLACE()。

以下是我2014年的回答,该回答仍然适用于8.0之前的任何版本的MySQL:

REPLACE()不支持通配符,模式,正则表达式等。REPLACE()仅将一个常量字符串替换为另一个常量字符串。

您可以尝试一些复杂的操作,以选择字符串的开头部分和字符串的结尾部分:

UPDATE table
SET Configuration = CONCAT(
      SUBSTR(Configuration, 1, LOCATE('<tag>', Configuration)+4),
      NEW_DATA,
      SUBSTR(Configuration, LOCATE('</tag>', Configuration)
    )

但这不适用于您多次出现的情况<tag>

您可能必须将行取回应用程序,使用您喜欢的语言执行字符串替换,然后将行发回。换句话说,每一行分三步进行。



 类似资料:
  • 我有两个文本文件,并用第二个文件中的实际匹配项替换XXX占位符-按照第二个文件中给出的顺序。 第一个文本是一个文件,在一行中有多行和多个占位符。 欧盟由以下国家组成:XXX、XXX、XXX、XXX、XXX。。。。欧盟内最大的三个国家是XXX,XXX,XXX。 第二个文件是每行一个匹配的列表: 波兰荷兰丹麦西班牙意大利德国法国 我想把它替换如下: 欧洲联盟由下列国家组成:波兰、荷兰、丹麦、西班牙、意

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。

  • 我们希望替换整个xml文件中的一些特殊字符,并使用XSLT1.0对xml应用一些模板。 它将产生预期的输出。但这是示例xml文件,但实际上我们有许多节点的xml文件,其中可能包含需要用“*”替换的字符。在选择值时应用转换函数是一个巨大的过程。 有谁能指导我如何替换xml文件中的字符,然后应用模板来使用XSLT1.0获得预期的响应吗?。

  • 这是这个问题的后续问题。answers中提出的解决方案是使用groupBy运算符。这通常是好的,但正如其文档中所提到的,不建议与大量不同的键一起使用,比如说数以万计的键。 每个群体在本质上都有无限的元素,这些元素可能随时到达。此外,我需要限制并发处理的组的数量。据我所知,如果我使用上面的代码,要么我会达到开放组的隐式限制,新组不会被打开(处理),要么Ï最终会达到内存不足,因为即使是长时间不活动的组

  • 我需要将姓氏列表转换为字母数字用户名,但不幸的是,其中一些包含非ascii字符: 现在有一种方法是使用正则表达式删除任何非字母数字字符,例如。然而,更直观的解决方案(至少对用户来说)是将重音字符替换为它们的“纯”等价物,例如将、转换为,将转换为等。在javascript中有没有简单的方法来做到这一点?

  • 问题内容: 我正在加载一个包含换行符的文本文件,并将其传递给。 用替换为已加载的字符串中的with ,它们会被模板转义为html 并显示在浏览器中,而不是引起换行。 如何更改此行为而无需切换到(没有XSS保护)? 问题答案: 看来您可以先在文本上运行template.HTMLEscape()进行净化,然后执行\ n 替换所信任的内容,然后将其用作预先转义和信任的模板数据。 更新:在Kocka的示例