gpt4 book ai didi

sql - 在某个数据库的表中搜索具有特定值的列名称

转载 作者:行者123 更新时间:2023-12-02 02:13:37 25 4
gpt4 key购买 nike

有什么方法可以搜索具有特定值的列,我试图通过数据库中的所有表查找?例如我有

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%VersionID%'
ORDER BY schema_name, table_name;

我通过搜索找到的。它为我提供了“versionID”列存在的表名,但我如何搜索以返回表名,例如该列的值为“35”。

提前致谢


抱歉,我的要求可能不够明确。也许这不能在 SQL 中完成,因为我没有通过我的研究发现任何东西。但让我澄清一下。

运行这个脚本

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%factor%'
--and table_name in (Select name from sysobjects where ratingVersionID = 35)
ORDER BY schema_name, table_name;

例如会返回这个: Query Results

但是假设“AutoAge_Factor”表中的“factor”列没有任何匹配“35”的记录。我怎样才能消除该表返回的结果。但我真的更喜欢这样的结果格式,因为我想将此返回用作循环并在循环内做一些其他事情。

再次感谢!

最佳答案

对您的 sql 的这种修改将生成更多您可以运行的 SQL

SELECT 
'select '''+SCHEMA_NAME(schema_id) +'.'+t.name + ''', '+c.name + ' from '
+ SCHEMA_NAME(schema_id) +'.' + t.name
+ ' where ' + c.name + ' = 35'

FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%ID%'
ORDER BY schema_name(schema_id), t.name

如有必要,您可以使 SQL 自动运行,但其语法取决于您的平台。或者,将结果复制到您的查询工具中并运行它们(如果足够的话)

关于sql - 在某个数据库的表中搜索具有特定值的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com