用子查询中的关键字/值替换文本

daupos2t  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(342)

我有一个带有文本字段的表#1。这个字段包含了一段文字的内容,我放了一些占位符像“总统
我有一个表#2,有两个字段:键和值。键是“总统”,值是“亚伯拉罕·林肯”
如何在单个查询中写入,使表#1的结果被表#2的值替换为占位符?
谢谢

ou6hu8tu

ou6hu8tu1#

你可以用这样的方法来选择主席

e0bqpujr

e0bqpujr2#

使用 REPLACE() 连接两个表后的函数。

SELECT REPLACE(t1.textfield, t2.key, t2.value) AS new_textfield
FROM Table1 AS t1
JOIN Table2 AS t2 ON LOCATE(t1.textfield, t2.key) != 0

请注意,这一次只对一个占位符有效。如果文本字段包含多个占位符,则每次替换都会得到不同的结果行,它们不会合并。
我认为您可以使用递归的cte获得多个替换,但是cte只在mysql 8.0开始时才可用,我对它们并不熟悉。据我所知,递归cte将返回除最终组合替换之外的所有中间替换;我不知道怎么过滤掉。

相关问题