2015-02-24 32 views
-4

我想知道是否可以編寫一個查詢,以便從數據庫的所有表中返回值爲dcf023的所有字段。字段dcf023 n列標題列xyz。這個代碼選擇列xyz的所有列,但我需要縮小字段值= dcf023而不是列。SELECT語句查詢數據庫中的所有500個表以返回值爲james或xyz的所有字段

--This碼返回只有列不是字段= -

SELECT COLUMN_NAME,TABLE_NAME

FROM INFORMATION_SCHEMA.COLUMNS

WHERE COLUMN_NAME LIKE '%Scolumnxyz%'

謝謝你的幫助。

+3

談論標籤垃圾郵件....這是哪一個呢? – 2015-02-24 20:46:18

+1

@Rick:我想他忘了標記爲「垃圾郵件」;) – Ditto 2015-02-24 20:59:05

+0

你是什麼意思我真的需要這個沒有笑話 – MrSQLDBA 2015-02-24 21:02:28

回答

0

我當然希望這是爲了分析,而不是一直想做的事情。這是我爲這種類型的東西寫的一個腳本。你可能想稍微修改這個來過濾列名,但這應該讓你開始。這將生成一系列需要複製然後運行的選擇語句。

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 
+0

這聽起來像有工作至少跑我的意思。但想出了很多select語句,你如何才能提供結果,列和表不是所有2k +行的SELECT [SystemAssignId],[AccountId],[CompOperId],[PrevAcctId] FROM [AcAccountPointer] WHERE [ SystemAssignId] IN('14348600000000')或[AccountId] IN('14348600000000')或[CompOperId] IN('14348600000000')或[PrevAcctId] IN('14348600000000') – MrSQLDBA 2015-02-25 14:03:12

+0

您有幾個選擇。您可以將結果複製並粘貼到新的查詢窗口中以運行它們,也可以將其擴展爲以動態SQL的形式執行這些結果。這種事情只能作爲一次或部分分析來完成。這絕不應該定期進行,因爲它會非常緩慢。 – 2015-02-25 14:32:13

+0

其收集了大量空柱。有沒有辦法調整它只帶來不空的結果? – MrSQLDBA 2015-02-25 21:45:03

相關問題