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

时间:2018-11-08 03:08:06

标签: mysql

我有一个带有文本字段的表#1。 该字段包含一段文本 在内容中,我放置了一些占位符,例如“ [[the_president]]”

我有一个表2,其中包含2个字段:键和值。 键是“ [[the_president]]”,值是“ Abraham Lincoln”

如何在单个查询中编写表格#1的结果替换为表格#2的占位符?

谢谢

2 个答案:

答案 0 :(得分:0)

在连接两个表后使用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

请注意,这一次仅适用于一个占位符。如果一个文本字段包含多个占位符,则每次替换将获得不同的结果行,它们将不会合并。

我认为您可以使用recursive CTE进行多次替换,但是CTE仅从MySQL 8.0开始可用,我对它们不熟悉。据我所知,递归CTE会返回除最终组合替换之外的所有中间替换;我不确定如何将其过滤掉。

答案 1 :(得分:-2)

您可以像这样使用  选择_presiden作为