现在我在SQL中有100个表,我在所有表中寻找一个特定的字符串值,我不知道它在哪个列中。
select * from table1, table2 where column1 = 'MyLostString'
无效,因为我不知道它必须在哪一列。
是否有SQL查询,我必须强行搜索每个表中每个列的'MyLostString'
如果我要对所有表进行强力搜索,是否有一个有效的查询? 例如:
select * from table3 where allcolumns = MyLostString
答案 0 :(得分:1)
这是RDBMS(或至少其中一个)的定义特征,值的含义取决于它所在的列。例如:如果值17
位于customer_id
列中,则值product_id
将具有完全不同的含义,而不是虚构orders
表的mydbexportcommand --options | grep -C10 'My lost string'
。
这导致了这样一个事实,即无论在哪个表中可能使用哪一列,RDBMS都不具备搜索值的能力。
我的建议是首先研究数据模型以试图找出哪个表应该保存该值的哪一列。如果这确实失败了,那么你遇到的问题比“丢失的字符串”要糟糕得多。
最后一步是将数据库转换为更适合全文搜索的内容...例如平面文件。您可能想尝试{{1}}或朋友。