首页 > 解决方案 > SQL - 如何将整个表中的字符替换为 100 列?

问题描述

有没有办法替换整个表中的所有字符(或一组字符)?(不仅在一列内)

例如 - 如果我想一次将所有列中的整个表和字符“ab”替换为其他所有列(例如“cd”) - 怎么做?

与特定的数据库技术无关,但如果它会有所帮助 - 假设它是 MySql。

如果有帮助,我可以创建一个临时表或“最终”表。

标签: mysqlsqlreplace

解决方案


使用 MySQL 的方法是:

UPDATE MyTable
SET col001 = REPLACE(col1, 'ab', 'cd'),
    col002 = REPLACE(col2, 'ab', 'cd'),
    ...
    col100 = REPLACE(col100, 'ab', 'cd');

写出 100 个这样的子句很乏味,但您可以使用 SQL 生成整个 UPDATE 语句:

SELECT CONCAT('UPDATE MyTable SET ',
  GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '` = REPLACE(`', COLUMN_NAME, '`, '''ab'', ''cd'')'),
  ';') AS _sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MyTable';

(未经测试)


推荐阅读