我當然希望這是爲了分析,而不是一直想做的事情。這是我爲這種類型的東西寫的一個腳本。你可能想稍微修改這個來過濾列名,但這應該讓你開始。這將生成一系列需要複製然後運行的選擇語句。
DECLARE @MySearchCriteria VARCHAR(500)
SET @MySearchCriteria = '''10345''' --you do need all these quotation marks because this string is injected to another string.
SELECT 'if exists(SELECT ' + c.columnlist + '] FROM [' + t.name + '] WHERE ' + w.whereclause + ') SELECT ' + c.columnlist + '] FROM [' + t.name + '] WHERE ' + w.whereclause as SelectStatement
FROM sys.tables t
CROSS APPLY (
SELECT STUFF((
SELECT '], [' + c.Name AS [text()]
FROM sys.columns c
join sys.types t2 on t2.user_type_id = c.user_type_id
WHERE t.object_id = c.object_id
AND c.collation_name IS NOT NULL
AND c.max_length > 6
and t2.name not in ('text', 'ntext')
FOR XML PATH('')
), 1, 2, '')
) c (columnlist)
CROSS APPLY (
SELECT STUFF((
SELECT ' OR [' + c.Name + '] IN (' + @MySearchCriteria + ')' AS [text()]
FROM sys.columns c
join sys.types t2 on t2.user_type_id = c.user_type_id
WHERE t.object_id = c.object_id
AND c.collation_name IS NOT NULL
AND c.max_length > 6
and t2.name not in ('text', 'ntext')
FOR XML PATH('')
), 1, 4, '')
) w (whereclause)
where c.columnlist is not null
ORDER BY t.name
談論標籤垃圾郵件....這是哪一個呢? – 2015-02-24 20:46:18
@Rick:我想他忘了標記爲「垃圾郵件」;) – Ditto 2015-02-24 20:59:05
你是什麼意思我真的需要這個沒有笑話 – MrSQLDBA 2015-02-24 21:02:28