用于在数据库的所有表中搜索关键字的存储过程

时间:2012-09-21 11:06:29

标签: database search stored-procedures

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

任何人都可以帮助我摆脱这个问题.. !!

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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 . '%'  

等...

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

可能对某人有帮助..