Py学习  »  DATABASE

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

SequenceDigitale.com • 5 年前 • 1285 次点击  

我有一个带文本字段的表1。 此字段包含一段文本 在内容中,我放了一些占位符,比如“[[总统]]”

我有一个表2有两个字段:键和值。 关键是“[[总统]”,价值是“亚伯拉罕·林肯”

如何在单个查询中写入,使表1的结果成为由表2的值替换的占位符?

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40983
 
1285 次点击  
文章 [ 2 ]  |  最新文章 5 年前
姜海龙
Reply   •   1 楼
姜海龙    6 年前

你可以这样用 选择主席为

Barmar
Reply   •   2 楼
Barmar    6 年前

使用 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除了返回最终的组合替换之外,还将返回所有中间替换;我不确定如何过滤掉这些替换。