2015-12-04 62 views
0

我正在使用一個有20個表的數據庫,並且需要找到其中包含字符串值「費用」的表。如何查詢特定行值的表的數據庫?

我將如何去尋找包含這個表的表?

我嘗試使用

Select t.name as table_name, c.name as column_name 
from sys.columns c 
    inner join sys.tables t 
      on c.object_id=t.object_id 
Where c.name like '%fees%' 

雖然,很明顯,這只是返回各自的列包含單詞「費」表。

有沒有辦法找到包含行值='費用'的表格?

回答

1

SQL數據庫存儲結構化數據,因此需要在結構中的正確位置查找所需的數據。也就是說,您可以嘗試多種方法,具體取決於您擁有的數據總量。

  1. 如果數據量相對較小,說幾百兆到一個千兆字節左右,你可以轉儲每個表成文本格式的文件。然後,您可以使用像grep這樣的工具來搜索包含該數據的文件。

  2. 如果數據量是相當大的,你可以查詢系統目錄爲你做,但查詢的形式可以是那些返回SQL選擇作爲輸出。然後,您可以執行這些sql選項來查看它們中的任何一個是否返回您正在查找的內容。例如。

    select 'select ' + c.name + ' from ' + t.name + ' where ' + c.name + ' like ''%fees%''' from sys.columns as c inner join sys.tables as t on c.object_id=t.object_id where c.system_type_id in (167, 231) -- Get the rest of these values by inspecting sys.types and t.type_desc = 'USER_TABLE'

+0

我測試這個SQL服務器上,但它應該在MySQL的工作,雖然你可能需要調整第二行以適應MySQL的字符串連接和報價逃避的問題。 –

+0

對於遲到的回覆感到抱歉,我現在就試一試,然後回覆你。 謝謝! – elbarto

相關問題