我有一个带有文本字段的表#1。 该字段包含一段文本 在内容中,我放置了一些占位符,例如“ [[the_president]]”
我有一个表2,其中包含2个字段:键和值。 键是“ [[the_president]]”,值是“ Abraham Lincoln”
如何在单个查询中编写表格#1的结果替换为表格#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作为