簡體   English   中英

在mysql中獲取文本的某些部分並更新值

[英]Get certain part of text and update value in mysql

我想在我的應用程序上更新一些書寫格式。 目前保存在數據庫中的內容是這樣的(示例)

HI this is link [link](Google Web)google.com[/link]

我想將其更新為純 HTML 標簽

 HI this is link <a href="google.com"> Google Web</a>

我想直接在mysql上更新值

如果所有數據格式都類似於示例,請嘗試以下操作:

SELECT val,
       CONCAT(SUBSTRING(REPLACE(val,'[link]','<a href="'),1,LOCATE('(',val)+2),SUBSTRING_INDEX(REPLACE(SUBSTRING(val,LOCATE(')',val)+1,999),'[/',' '),' ',1),
       SUBSTRING_INDEX(REPLACE(val,SUBSTRING(val,LOCATE('(',val)),' ">'),' ',-1),SUBSTRING_INDEX(SUBSTRING(val,LOCATE('(',val)+1),')',1),REPLACE(SUBSTRING(val,LOCATE('/',val)-1),SUBSTRING(val,LOCATE('/',val)-1),'</a>')) newVal
       FROM yourTable;

這是小提琴中的一個快速示例: https : //www.db-fiddle.com/f/2kCoc6DbDLh8gHPJ9Yawk9/0

這是我目前的解決方案

步驟 1.在以前的格式中放置一個鏈接

UPDATE infos
set subject = REPLACE(subject,
substring_index(substring_index(subject, '[link]', -1), '[/link]', 1), 
CONCAT("<a href='"
,substring_index(substring_index(substring_index(subject, '[link]', -1), '[/link]', 1), ')', -1)   
,"'>"
,substring_index(substring_index(substring_index(substring_index(subject, '[link]', -1), '[/link]', 1), '(', -1), ')', 1)
,"</a>")
)
WHERE subject LIKE '%(%'
AND subject LIKE '%)%'
AND subject LIKE '%[link]%'
AND subject LIKE '%[/link]%'

Step 2刪除[link]和[/link]標簽

UPDATE infos
set subject = REPLACE(REPLACE(subject, "[link]<a", "<a"), "</a>[/link]", "</a>")
WHERE subject LIKE '%[link]%'
AND subject LIKE '%[/link]%'

注意如果你在1個主題中有多個鏈接,它不會直接改變它,你必須重做步驟1和2,直到沒有行受到影響

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM