【问题标题】:How to expand using of trim() and replace() for multiple tables and columns如何为多个表和列扩展使用 trim() 和 replace()
【发布时间】:2015-09-10 18:32:06
【问题描述】:

我有 20 个表格,每个表格都有 20 列。所有列的类型都是varchar。我想在 MySQL 中使用 replace()trim()。像这样的:

UPDATE table1 SET col1 = TRIM(REPLACE(`col1`, 'x', 'y' ));

现在我正在寻找一种通用的方法来做到这一点。事实上,我不能对所有表和列使用上述查询(20*20=400 次)。是否可以针对所有表和列展开上述查询?

换句话说,如何使用* 将所有列选择为trim()replace()

【问题讨论】:

  • 使用模式表并动态生成脚本。 SQL 中没有宏工具。
  • @shawnt00 谢谢,但是我想我不能在sql中动态生成脚本。

标签: mysql replace trim


【解决方案1】:

这是一个开始。 MySQL 不是我的专长,但总体思路应该可行。

select
    concat(
        'update ', table_name, ' set ',
        group_concat(
            concat( column_name, ' = trim(replace(', column_name, ', ''x'', ''y''))' )
        )
    )
from information_schema.columns
group by table_name

【讨论】:

  • table_namecolumn_name 是手动的吗?我的查询和您的解决方案有什么区别?
  • 我认为我应该使用 array(); 包含所有表格名称。然后获取每个表的列名(我不知道如何,可能是这样的information_schema.columns)。然后运行 ​​array(); 介绍我的代码。你能实现吗?
  • 您不需要数组。您当然可以过滤表列表where table_name in (...)
  • 什么?那我们放什么而不是table_name
  • table_name 是信息模式中的真实列。试试看。
猜你喜欢
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2021-07-27
  • 2017-02-07
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多