1

我正在研究一个数据库,在那里我可以搜索一个关键字(可能是名称、地址或城市等)。现在我需要创建一个存储过程来在数据库的所有表中进行搜索..!!

任何人都可以帮我解决这个问题.. !!

4

2 回答 2

0

我来回答一下,

您必须选择您想要执行搜索功能的列,

然后开始这样的事情。

SELECT * FROM TABLE1
LEFT OUTER JOIN TABLE2 on TABLE2.a = TABLE1.a
LEFT OUTER JOIN TABLE3 on TABLE3.a = TABLE1.a
LEFT OUTER JOIN TABLE4 on TABLE4.a = TABLE3.a

WHERE TABLE1.a LIKE '%'. Keyword . '%' OR
      TABLE2.b LIKE '%'. Keyword . '%' OR
      TABLE3.a LIKE '%'. Keyword . '%' OR
      TABLE4.c LIKE '%'. Keyword . '%' OR
      TABLE1.b LIKE '%'. Keyword . '%'  

ETC...

这是基本方法之一,但是 v 将有更有效的方法..

可能会帮助某人..

于 2013-02-14T09:37:26.097 回答
0

没有数据库内置支持这种要求。因此,您必须根据环境和标准开发自己的解决方案。

现在,一个通用的解决方案是创建一个迭代所有表中的所有列并找到匹配列的过程。这通常意味着相当大的性能成本,具体取决于数据库的大小,必须避免或仔细检查性能。可以使用列类型检查等技术来减少搜索空间并避免不必要的成本。

根据您的数据库类型,其他解决方案可能可用。例如,如果您的数据库是 Oracle,我发现这里给出的技术很有用。此外,包括 Oracle 在内的最广泛使用的数据库支持全文搜索功能,可有效搜索文本列内的模式。您应该查阅数据库手册以找到完成这项工作的有效方法。

于 2012-09-21T13:47:58.397 回答