我正在使用搜索算法在我的数据库中查找符合特定条件的表。输出如下:
TableName | ColumnName
--------------+---------------
Table1 | Column1
Table1 | Column2
Table1 | Column3
Table2 | Column4
Table2 | Column1
... | ...
Table652 | Column873
然后我尝试将该表用作我尝试使用的另一个查询的输入:
WHERE Tablename.ColumnName LIKE 'Post 2013 - %'
或者
WHERE ((TableName).(ColumnName)) LIKE 'Post 2013 - %'
或者
SELECT ...
CONCAT(TableName, '.', ColumnName) AS TabCol
FROM search
WHERE TabCol LIKE 'Post 2013 - %'
问题是我的代码在每个WHERE语句中都返回错误。我是否可以使用第一个输出作为扫描这些表中特定值的方法,返回TableName和ColumnName找到值的位置?
答案 0 :(得分:0)
要做类似的事情,我发现通常有两种方法可以正常工作。一种是将整个数据库提取到文本文件,并使用文本搜索工具查找所搜索的数据。
另一种是使用系统表来识别所有表格/字段。然后在运行查询的那些字段中循环一些代码。您可能希望首先检查数据类型以消除日期,数字或整数数据类型之类的内容。或者您可以手动执行此操作。但实际上并没有像标准的Sql方法那样。
答案 1 :(得分:0)
如果您使用SQL Server作为数据库: - 您可以使用动态查询。
您可以编写一个存储过程或函数,其逻辑类似于屏幕截图中返回所需结果的表数据。您可以传递Tablename,Columnname,Conditions作为参数。假设您拥有表格中的所有数据。
以下是我尝试使用上述方案的示例查询。
select * from search;
select * from table2;
Declare @sql varchar(max)
select @sql='select * from '+ tablename+' where '+columname+'='+'''john-her'''
from search where tablename='table2' and columname='namedata2'
select @sql
exec(@sql)
我刚试过样品......可能有多种情况有条件。希望这可以帮助您了解如何解决您的问题!!