2012-12-13 281 views
-1

現在我在SQL 100桌,我期待所有表中的一個特定的字符串值,我不知道它是在哪一列。有沒有辦法在SQL

多個表內搜索select * from table1, table2 where column1 = 'MyLostString'將無法​​工作,因爲我不知道它是在哪一列。

是否有一個SQL查詢,我必須蠻力搜索的每個表中每一列那MyLostString「

如果我對所有表進行蠻力搜索,是否有一個有效的查詢? 例如:

select * from table3 where allcolumns = MyLostString

+0

請不要再次使用隱式連接,它們是SQL反模式並且已過時20年。 – HLGEM

+1

爲什麼你不知道你的數據模型足夠好,知道數據存儲在哪裏? – HLGEM

+0

我是新來的公司,我的技術架構師正在度假。通過查看控制檯,我知道列標題來自View。但是我的技術主管希望列表中的列標題,而不是視圖。 – bouncingHippo

回答

1

它是一個RDBMS(或者至少它們中的一個)的限定特徵,即意思是值的依賴於它是在例如:值17將具有完全不同的含義,如果其位於customer_id列中,則位於虛構的orders表中的product_id

這導致了這樣一個事實,即RDBMS沒有很好的裝備去搜索一個值,不管在哪個列中可能使用哪個表。

我的建議是首先研究數據模型以試圖找出哪個表的哪一列應該保持該值。如果這真的失敗了,你會遇到比「丟失的字符串」更糟糕的問題。

最後的重新調整是將數據庫轉換爲更適合全文搜索的東西......例如平面文件。您可能想嘗試mydbexportcommand --options | grep -C10 'My lost string'或朋友。

+1

提供建議,如果我將數據庫轉換爲平面文件...這不會是巨大的嗎? – bouncingHippo

+0

這就是爲什麼我建議通過一個過濾器管道,只保留一些上下文 –