gpt4 book ai didi

mysql - 在 MySQL 中替换为 : Different values from a table to be replaced by "XXX"

转载 作者:行者123 更新时间:2023-11-30 21:30:33 26 4
gpt4 key购买 nike

我想用“XXX”替换很多字符串。要替换的字符串在一个特殊的表中。例如在表中有“史密斯先生”,“米勒先生”,......(数百条记录),在另一个表的一个字段中有 e。 G。 “亲爱的史密斯先生,谢谢你……”。结果应该是“亲爱的 XXX,谢谢你……”。如何做到这一点?

我唯一的想法是在 PHP 中创建一个循环并将其作为 Cronjob 执行。但是有什么办法可以纯粹用一条 SQL 语句来实现吗?

最佳答案

如果您有类似这些表格的内容:

CREATE TABLE Customer(
CustomerID SMALLSERIAL PRIMARY KEY,
Name VARCHAR(256) NOT NULL);

INSERT INTO Customer(Name) VALUES('Mr. Miller');
INSERT INTO Customer(Name) VALUES('Mr. Smith');
INSERT INTO Customer(Name) VALUES('Mr. John');
INSERT INTO Customer(Name) VALUES('Mr. Alex');


Create table Template(
TemplateID SMALLSERIAL PRIMARY KEY,
Description VARCHAR(256) NOT NULL);

INSERT INTO Template(Description) VALUES('Dear Mr. Smith, thank you for');
INSERT INTO Template(Description) VALUES('Dear Mr. John, thank you for');
INSERT INTO Template(Description) VALUES('Dear Mr. Alex, thank you for');

你可以使用这样的东西。

SELECT customer.Name, template.description, REPLACE(template.description, customer.Name, 'XXX') 
FROM Customer INNER JOIN Template ON template.description LIKE CONCAT('%', Customer.name, '%');

结果是:

And the result would be:

更新查询类似于:

WITH subquery AS (
SELECT customer.Name, template.description, REPLACE(template.description, customer.Name, 'XXX')
FROM Customer INNER JOIN Template ON template.description LIKE CONCAT('%', Customer.name, '%')
)
UPDATE template
SET description = subquery.replace
FROM subquery;

关于mysql - 在 MySQL 中替换为 : Different values from a table to be replaced by "XXX",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com