このスニペットを使用して、データベースの任意のテーブルで特定の文字列を見つけています!
DECLARE @searchstring NVARCHAR(255)
SET @searchstring = '%foo%'
DECLARE @sql NVARCHAR(max)
SELECT @sql = STUFF((
SELECT ' UNION ALL SELECT ' + COLUMN_NAME + ' ' +
' FROM ' + TABLE_NAME +
' WHERE ' + COLUMN_NAME + ' LIKE ''' + @searchstring + ''''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE in ('nvarchar', 'varchar', 'char','nchar')
FOR XML PATH('')
) ,1, 11, '')
exec (@sql)
しかし、これらのエントリの主キーの値を取得したいと思います!
使用する特定のテーブルの主キーを取得するには
SELECT ccu.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu ON tc.CONSTRAINT_NAME = ccu.Constraint_name
WHERE tc.CONSTRAINT_TYPE = 'Primary Key'
AND tc.TABLE_NAME = 'tbl_table'
しかし、両方を組み合わせることはできませんか?!