我想添加另一个具有COUNT()子查询的列,分别使用TBL_A.TABLE_NAME和TBL_A.COLUMN_NAME中的表名和列名,但是该子查询不接受TBL_A.TABLE_NAME中的值作为有效的表对象。 >
当前正在使用MS SQL服务器
SELECT TBL_A.TABLE_NAME
, TBL_A.COLUMN_NAME
, TBL_A.DATA_TYPE
, (SELECT [TBL_A].[COLUMN_NAME] FROM [TBL_A].[TABLE_NAME] WHERE [TBL_A].[COLUMN_NAME] = 'Some Keyword')
FROM INFORMATION_SCHEMA.COLUMNS AS TBL_A;
我要检查我输入的关键字是否存在于INFORMATION_SCHEMA的指定表名。列名中(例如COUNT> 0表示当前)
答案 0 :(得分:0)
尝试这种方法。
注意:(从2008年开始)在SQL Server中受支持。
它使用 SELECT - OVER Clause 并搜索包含所需关键字的列。
SELECT [TBL_A].[TABLE_SCHEMA]
, TBL_A.TABLE_NAME
, TBL_A.COLUMN_NAME
, COUNT(*) OVER(PARTITION BY [TBL_A].[TABLE_SCHEMA], [TBL_A].[TABLE_NAME])
AS [Count in Current Table]
, COUNT(*) OVER(PARTITION BY [TBL_A].[COLUMN_NAME])
AS [Count in Current Database]
FROM INFORMATION_SCHEMA.COLUMNS AS TBL_A
WHERE [TBL_A].[COLUMN_NAME] LIKE '%Some Keyword%';