检查表中任何列中是否存在值

时间:2014-04-01 12:36:26

标签: sql sql-server sql-server-2008

我有一个包含200多列的表格。我在文本文件的帮助下填充表格。数据已成功插入表中。

我的问题是我想检查文本文件中的特定值是否存在于表中。我知道有些人可能会说我可以检查一下,你可以从代码中映射列名,然后使用列名并检查如下:

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

但我没有访问代码的权限。我只有文本文件和数据库。 所以我只需检查数据库中的值。繁琐冗长的一种方法是逐个逐一地进入每个200列,然后像上面那样执行。还有其他办法吗?

4 个答案:

答案 0 :(得分:1)

根据你的桌子生成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

答案 1 :(得分:1)

这会给你一个真/假的结果:

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

答案 2 :(得分:0)

它是什么类型的文件?您可以使用SQL数据导入程序将文件导入新表。获得新表后,您可以在两个表上进行INNER JOIN以比较数据集。

答案 3 :(得分:0)

如果我理解正确,那么你有一个包含200列的表。在该表中,您可以从文本文件中放入一些数据,这意味着根据文本文件的大小在该表中填充x行数。

现在您想要在表格中找到某个值。

如果您对SQL不是很熟悉,可以试试这样的工具: SQL locator