【问题标题】:search for a string, inside columns with a text-like type, in all tables whose name contains another string在名称包含另一个字符串的所有表中,在具有类似文本类型的列中搜索字符串
【发布时间】:2013-04-26 11:22:21
【问题描述】:

我正在处理的数据库有大约 30 个表,其中可能包含我想要定位的不同数据。不是一个理想的情况,但是嘿嘿。

给定两个字符串...

  • string1 - 出现在表名中的值。
  • string2 - 要搜索类似文本的列的值。

...我想在名称匹配 string1 的所有表中搜索具有数据类型的列...

  • 文字
  • 字符
  • varchar

...对于数据行like "%string2%"

我理想地看到返回的是一个结果集,其中每个string1string2 命中都有一行,格式如下:

  • table_name_string1_appears_in
  • colum_name_string2_appears_in
  • value_from_id_col_of_table_with_name_like_string1
  • data_from_cell_matching_string2

是否存在可重复使用的纯 mysql 解决方案?

【问题讨论】:

  • 这必须是使用information_schema 构建的动态查询。你试过写吗?
  • 一些 SQL 客户端提供这种工具。你用的是哪一个?
  • 谢谢@Barmar,我正在调查。 @a_horse,我的 mysql 客户端是 mysql CLI :) mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64) using readline 6.1。 @echo_me。 @entropid 在链接问题中的答案看起来像是很好的构建块,谢谢。

标签: mysql


【解决方案1】:

一种 php 解决方法(不是纯 sql)是将 30 个表的名称存储在一个数组中。 foreach 每个并评估表名是否是您的 aray 值的一部分。如果为真,则对该表名运行 %string2% 选择查询

【讨论】:

  • 谢谢威利,我希望一些 SQL 可以做很多事情。我以前遇到过这种情况几次,但似乎每次都以独特的方式克服它。我以前一直使用另一种语言...
【解决方案2】:

如果你想在所有数据库中搜索字符串

然后这样做

   mysqldump -u myuser --no-create-info databasename > myfile.sql

然后在 myfile.sql 中找到你的字符串

或试试这个解决方案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多