繁体   English   中英

如何选择任何列具有特定值的sql数据库表中的所有记录

[英]How to select all records in sql database tables where any column has a particular value

我正在尝试查找数据库中包含特定电子邮件地址的所有表。

我唯一知道的是,这意味着我正在寻找长度一定的varchar的任何列。

我正在考虑通过sys.tables某种循环,然后针对该循环中的每个表,对表中的行进行循环,然后对每一行中的每一列进行求值。

可能不是最好的解决方法,但是有些事情我还是不知道,尤其是:

  1. 如何更好地做到这一点,以及
  2. 首先如何编写此查询。

任何帮助将不胜感激。

您可以编写一个快速查询,为每个字段建立查询。

select 'select * from ' + TABLE_NAME + ' where ' + COLUMN_NAME + ' = ''the@email.com''' 
from INFORMATION_SCHEMA.COLUMNS
where DATA_TYPE = 'nvarchar' and CHARACTER_MAXIMUM_LENGTH = '256'

您可能正在查看类似sp_MSforeachtable的内容。 在[sys]。[columns]中找到所有具有[varchar]类型的列的表([nvarchar]也正确吗?它们是否也可以在[char]或[nchar]列上?)。 然后,sp_MSforeachtable访问列中的值。

基本上,您正在看嵌套游标。 一种用于获取所有“文本”列以及关联的表。 另一个在每个表和列上运行选择。

这是蛮力的东西,并不漂亮。

我也曾在一个已有(通常是古老且受人尊敬的)设计的环境中工作。 有时您只需要做这样的事情。 我喜欢编写SQL,因此很有趣。

幻想从头开始构建东西到一些完美的理想总是很好,但是没有一个计划是完美的。 您必须能够做这样的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM