我有一个带有文本字段的表#1。这个字段包含了一段文字的内容,我放了一些占位符像“总统”我有一个表#2,有两个字段:键和值。键是“总统”,值是“亚伯拉罕·林肯”如何在单个查询中写入,使表#1的结果被表#2的值替换为占位符?谢谢
fumotvh31#
使用 REPLACE() 连接两个表后的函数。
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将返回除最终组合替换之外的所有中间替换;我不知道怎么过滤掉。
sczxawaw2#
你可以用这样的方法来选择主席
2条答案
按热度按时间fumotvh31#
使用
REPLACE()
连接两个表后的函数。请注意,这一次只对一个占位符有效。如果文本字段包含多个占位符,则每次替换都会得到不同的结果行,它们不会合并。
我认为您可以使用递归的cte获得多个替换,但是cte只在mysql 8.0开始时才可用,我对它们并不熟悉。据我所知,递归cte将返回除最终组合替换之外的所有中间替换;我不知道怎么过滤掉。
sczxawaw2#
你可以用这样的方法来选择主席