-1

现在我在 SQL 中有 100 个表,我正在所有表中寻找一个特定的字符串值,但我不知道它在哪一列。

select * from table1, table2 where column1 = 'MyLostString'将不起作用,因为我不知道它必须在哪一列。

是否有一个 SQL 查询,我必须强力搜索每个表的每一列的“MyLostString”

如果我要对所有表进行暴力搜索,是否有有效的查询?例如:

select * from table3 where allcolumns = MyLostString

4

1 回答 1

1

这是 RDBMS(或至少其中一个)的定义特征,值的含义取决于它所在的。例如:如果该值位于列中,则与在列17中的含义完全不同。一个虚构的customer_id桌子。product_idorders

这导致了这样一个事实,即 RDBMS 不能很好地搜索一个值,无论它可能在哪个表的哪一列中使用。

我的建议是首先研究数据模型以尝试找出哪个表的哪一列应该保存该值。如果这真的失败了,那么您遇到的问题比“丢失的字符串”要严重得多。

最后的办法是将数据库转换为更适合全文搜索的东西......例如平面文件。您可能想尝试mydbexportcommand --options | grep -C10 'My lost string'或朋友。

于 2012-12-13T19:48:19.380 回答