![](/img/trans.png)
[英]How to add values of primary key column into foreign key column of other table
[英]Retrieve primary key value of table when search for values in other column
我正在使用此代碼段在數據庫的任何表中查找特定的字符串!
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'
但是我不能兩者兼而有之嗎?
一些表的主鍵可能有多個列,而另一些表可能沒有主鍵。 這使這項任務更加困難,並且結果列必須是一列中的主鍵值列表。
SELECT @sql = STUFF((
SELECT ' UNION ALL SELECT ' + QUOTENAME(C.COLUMN_NAME) + ', ' +
ISNULL(STUFF((SELECT '+'', ''+CAST('+QUOTENAME(COLUMN_NAME)+' AS VARCHAR(MAX))'
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CU
ON TC.CONSTRAINT_NAME = CU.CONSTRAINT_NAME AND
TC.TABLE_NAME = CU.TABLE_NAME
WHERE CU.TABLE_NAME = C.TABLE_NAME AND
TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
FOR XML PATH('')), 1, 6, ''), '''''')+' AS PrimaryKeys'+
' FROM ' + QUOTENAME(C.TABLE_NAME) +
' WHERE ' + QUOTENAME(C.COLUMN_NAME) + ' LIKE ''' + @searchstring + ''''
FROM INFORMATION_SCHEMA.COLUMNS AS C
WHERE C.DATA_TYPE in ('nvarchar', 'varchar', 'char','nchar')
ORDER BY C.TABLE_NAME
FOR XML PATH('')
) ,1, 11, '')
使用小提琴中的表,生成的查詢將如下所示。
SELECT [Col],
CAST([ID] AS VARCHAR(MAX)) AS PrimaryKeys
FROM [T1]
WHERE [Col] LIKE '%foo%'
UNION ALL
SELECT [Col],
CAST([Col] AS VARCHAR(MAX))+', '+CAST([ID] AS VARCHAR(MAX)) AS PrimaryKeys
FROM [T2]
WHERE [Col] LIKE '%foo%'
UNION ALL
SELECT [Col],
'' AS PrimaryKeys
FROM [T3]
WHERE [Col] LIKE '%foo%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.