それらすべてを 1 つの結果セットで返したい場合は、次のクエリを使用できます。
DECLARE @cmd NVARCHAR(MAX);
SET @cmd = STUFF((
SELECT ' UNION ALL SELECT '+QUOTENAME(COLUMN_NAME)+' FROM '+QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%manuf%'
ORDER BY TABLE_NAME
FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)'),1,11,'')
;
EXEC( @cmd);
そのためには、それらすべてが (n)varchar データ型である必要があります。問題が発生した場合は、キャストを追加します。
SELECT ' UNION ALL SELECT CAST('+QUOTENAME(COLUMN_NAME)+' AS NVARCHAR(MAX)) FROM '+QUOTENAME(TABLE_NAME)
これは非常に奇妙なデータベース設計のようです。あなたはそれを再訪したいかもしれません...
うまくいかない場合INFORMATION_SCHEMA
は、これを使用してください:
DECLARE @cmd NVARCHAR(MAX);
SET @cmd = STUFF((
SELECT ' UNION ALL SELECT '+QUOTENAME(c.name)+' FROM dbo.'+QUOTENAME(t.name)
FROM sys.columns c
JOIN sys.tables t
ON c.object_id = t.object_id
WHERE c.name LIKE '%name%'
AND t.is_ms_shipped = 0
ORDER BY t.name
FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)'),1,11,'')
;
EXEC( @cmd);
INFORMATION_SCHEMA
ANSI 標準の一部ですが、通常は SQL Server カタログ ビューを使用することをお勧めします。
もう 1 つ:INFORMATION_SCHEMA
正しくない結果が返される場合は、何らかの破損が発生している可能性がありDBCC CHECKDB
ます。そのデータベースで実行して確認する必要があります。