【问题标题】:How to change a value between two characters SQL如何更改两个字符之间的值SQL
【发布时间】:2013-12-04 14:23:18
【问题描述】:

这个问题分为两部分。我将从第一个很明显的标题开始:

在前端我保存这个值:

您好:这里您可以访问的页面是 www.test.se

在数据库中,我正在尝试编写一个脚本来更改“:”和“The”之间的值

虽然在数据库中存储的值有点不同...看起来像这样:

"Hello you are: <br/> <br/> <br/> HERE <br/><br/><br/><br/>The page 
you can visite is" www.test.se

我想把“这里”改成“XXXX”

到目前为止我的尝试:
我发现这两个与我的问题相似的解决方案

Soloution One

Soloution Two

遗憾的是我无法让它工作......我尝试过这个:

select SUBSTRING(
        body, 
        CHARINDEX(':', body) +1 , 
        CHARINDEX('The',body)) 
         from @temp

我阅读了子字符串,我知道最后一个参数是它应该从起始位置开始多长时间,但我希望它停在“The”并且真的不知道如何。

这个问题的第二部分:

我只想更改“HERE”的值,我该如何做到这一点并避免删除 br 标签?

编辑:

我要更改的值并不总是相同,因此简单的更新语句将不起作用,这就是为什么我需要找到我要更改的值

【问题讨论】:

  • 总是三个 br 标签吗?

标签: mysql sql


【解决方案1】:

给你:

SELECT REPLACE(body, SUBSTRING(body, CHARINDEX(':', body) + 1, CHARINDEX('The page you can visite is', body) - (CHARINDEX(':', body) + 1)) ,' <br/> <br/> <br/> XXXX <br/><br/><br/><br/> ') 
FROM @temp

请注意,我在 CHARINDEX 中使用了完整的片段“您可以访问的页面是”,以减少在“HERE”部分中出现相同子字符串的可能性。

【讨论】:

    【解决方案2】:

    如果您的问题可以使用正则表达式替换来回答,我认为可以,请使用https://github.com/mysqludf/lib_mysqludf_preg 它将为您提供诸如PREG_REPLACE 之类的功能,以将匹配正则表达式的内容替换为其他数据

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 2013-05-22
      • 2017-12-27
      • 2016-07-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多