sql - 通过 INFORMATION_SCHEMA.COLUMNS 在数据库范围内搜索对象
问题描述
我想分别使用 TBL_A.TABLE_NAME 和 TBL_A.COLUMN_NAME 中的表名和列名添加另一个具有 COUNT() 子查询的列,但子查询不接受来自 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 中指定的 tablename.columnname 中(例如 COUNT > 0 因此是 PRESENT)
解决方案
试试这个方法。
注意:它在 SQL Server 中受支持(从 2008 开始)。
它使用SELECT - OVER 子句并搜索包含所需关键字的列。
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%';
推荐阅读
- c# - 在 HoloLens2 中用手在平面上绘制
- pandas - pd.groupby().expanding().mean() 在不应该的地方给出 NaN
- java - 如何让一次只运行一个应用程序实例?
- google-cloud-platform - 网络端点组删除失败。错误:请求失败,出现未知错误
- c++ - C++:静态断言参数包匹配函数类型
- algorithm - 将 + 或 - 号分配给前 n 个自然数以获得给定值
- javascript - ReactJS - Javascript try/catch 在控制台中显示错误
- nginx - 无法让 nginx-vod-module 插件工作
- reactjs - 如何在reactjs中显示带有列表项(LI)的无序列表(UL)
- mysql - 使用嵌套 JSON_ARRAYAGG() 的无效组使用函数