gpt4 book ai didi

mysql - 使用表对列执行多个 REPLACE 调用

转载 作者:行者123 更新时间:2023-11-30 00:31:53 25 4
gpt4 key购买 nike

我需要创建一个 SQL 解决方案来对字符串列执行多个搜索和替换操作。搜索/替换术语的数量以及搜索和替换术语本身都是动态的。

出于这个原因,我计划使用一个包含所有所需搜索和替换术语的表。因此,基本设置涉及两个表,一个通用表包含具有以下架构的字符串列:

CREATE TABLE GENERAL_TABLE (
ID INTEGER NOT NULL
, SOURCE_TEXT VARCHAR(1024) NOT NULL
, CONSTRAINT PRIMARY KEY (ID)
);

以及具有以下架构的搜索和替换术语表:

CREATE TABLE SEARCH_REPLACE (
SEARCH_TERM VARCHAR(256) NOT NULL
, REPLACE_TERM VARCHAR(256) NOT NULL
);

有没有办法将每个 SOURCE_TEXT 值中找到的所有 SEARCH_TERM 值替换为相应的 REPLACE_TERM 值?

例如,如果 GENERAL_TABLE 填充了以下记录:

ID  SOURCE_TEXT
-- -------------------------------------------------------
1 honesty is the best policy.
2 honesty is the best policy - when there is money in it.
3 we are all worms. but i believe that i am a glow-worm.
4 believe you can and you're halfway there.
5 ambition must be made to counteract ambition.
6 run, run as fast as you can.

SEARCH_REPLACE 填充有以下记录:

SEARCH_TERM  REPLACE_TERM
----------- ------------
honesty taco tuesday
policy sale
money cheese
worm robot
believe know
ambition loans
run swim

经过所有搜索和替换后,GENERAL_TABLE中期望的结果是:

ID  SOURCE_TEXT
-- -----------------------------------------------------------
1 taco tuesday is the best sale.
2 taco tuesday is the best sale - when there is cheese in it.
3 we are all robots. but i know that i am a glow-robot.
4 know you can and you're halfway there.
5 loans must be made to counteract loans.
6 swim, swim as fast as you can.

整个过程将由具有 DBA 权限的用户执行。因此,如果需要,任何解决方案都可以使用 DDL 命令。

最佳答案

  • 将 SEARCH_Replace 中的所有行值获取到字符串变量 + 包含替换函数

    声明@str nvarchar(2000)
    设置@str = '替换(SOURCE_TEXT,'
    从 @SEARCH_REPLACE 选择顶部 1 @str = @str + ''''+SEARCH_TERM + ''',''' + REPLACE_TERM + ''')' from @SEARCH_REPLACE --第一行
    select @str = 'Replace(' + @str + ',''' +SEARCH_TERM + ''',''' + REPLACE_TERM + ''')' from @SEARCH_REPLACE 其中 SEARCH_TERM 不像 '诚实' --其他行

  • 为@str构建查询

    声明@sql nvarchar(4000)
    set @sql = '从 GENERAL_TABLE 中选择 Source_Text, ' + @str + '

  • 执行@sql

    exec(@sql)

  • 表格结果

    NEW_TEXT
    -------------------------------------------------- -------
    周二炸 Jade 米饼是最优惠的。
    周二的炸 Jade 米饼是最好的销售 - 当里面有奶酪时。
    我们都是机器人。但我知道我是一个发光机器人。
    知道你可以,你就已经成功了一半。
    必须通过贷款来抵消贷款。
    游,尽可能快地游。

关于mysql - 使用表对列执行多个 REPLACE 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445064/

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