2014-04-01 69 views
0

我有一個包含200列以上的表格。我在文本文件的幫助下填充表格。數據已成功插入表中。檢查表中是否存在任何值

我的問題是,我想檢查表中是否存在文本文件中的特定值。我知道,你們當中有些人可能會說,我可以檢查它,你可以將列名從代碼映射,然後使用列名,並檢查這樣的:

select 1 from table_name where column_name like '%value%' 

但是,我有訪問代碼。我只有文本文件和數據庫。 所以我必須檢查數據庫中的值。一種乏味而冗長的方法是逐一往每列200列,然後像上面那樣執行。有沒有其他方法?

+0

重新運行在200個唯一值的文本文件中的單個行的表創建。您將能夠將輸入列從文本文件映射到數據庫中的輸出列。 – dav1dsm1th

回答

0

它是什麼類型的文件?您可以使用SQL數據導入器將文件導入到新表中。一旦你有了新的表格,你可以在兩個表格上進行INNER JOIN連接來比較數據集。

0

如果我理解正確,那麼你有一個200列的表。在該表中,您從文本文件中提取了一些數據,這意味着根據文本文件的大小在該表中填充了x行。

現在你想在表格中找到一定的值。

如果你不是很熟悉SQL,你可以嘗試一下這樣的工具: SQL locator

+0

是的,你是否正確,但你能解釋我在這種情況下如何使用SQL定位器? –

+0

使用該工具,您可以搜索整個數據庫中的特定值或僅在某些表中搜索特定值。我記得,該工具的設置非常簡單。 – user2110298

0

根據你的表格生成200個奇怪的腳本怎麼樣?下面的腳本可以是有用的

With Sample_CTE as (
select a.TABLE_NAME,b.COLUMN_NAME from INFORMATION_SCHEMA.TABLES a inner join 
    INFORMATION_SCHEMA.COLUMNS b on a.TABLE_NAME = b.TABLE_NAME and a.TABLE_NAME = 'MYTABLENAME') 
    SELECT 'SELECT TABLE_NAME,COLUMN_NAME from ' + TABLE_NAME + ' where '+ COLUMN_NAME +' like ''%value%''' from Sample_CTE 
+0

我會檢查這個! –

0

這會給你一個真/假結果:

DECLARE @tablexml XML = (SELECT * FROM yourtable FOR XML PATH('')) 
SELECT @tablexml.query('//*="valuetosearchfor"')