如何在MySQL查询结果中为LIKE匹配字符串添加HTML标记?
问题描述
我的数据库mydb中有如下数据:
id | name --------- 1 | abcdef 2 | bcdefg 3 | cdefgh 4 | defghi 5 | efghij
执行查询语句:
SELECT * FROM mydb WHERE name LIKE '%defgh%'
得到结果:
id | name --------- 3 | cdefgh 4 | defghi
希望直接通过MySQL在查询结果中新增html列,将LIKE语句匹配的defgh字符串用<mark>标签包裹,期望结果如下:
id | name | html ---------------- 3 | cdefgh | c<mark>defgh</mark> 4 | defghi | <mark>defgh</mark>i
解决方案
可以用MySQL的REPLACE()函数直接实现这个需求,具体查询语句如下:
SELECT id, name, REPLACE(name, 'defgh', '<mark>defgh</mark>') AS html FROM mydb WHERE name LIKE '%defgh%';
这个语句通过REPLACE()函数,将name字段中匹配的defgh字符串替换为<mark>defgh</mark>,直接生成包含HTML标记的html列,同时保留原name字段和id字段的内容,完全符合你的期望结果。
内容的提问来源于stack exchange,提问作者Aurélien Grimpard
相关产品推荐
相关产品推荐

