【发布时间】:2012-09-21 11:06:29
【问题描述】:
我正在研究一个数据库,在那里我需要搜索一个关键字(可能是名称、地址或城市等)。现在我需要创建一个存储过程来在数据库的所有表中进行搜索..!!
谁能帮我解决这个问题..!!
【问题讨论】:
-
您将不得不证明很多更多信息。例如,什么样的数据库?你使用什么编程语言?如果可以,请提供一些代码。
标签: database search stored-procedures
我正在研究一个数据库,在那里我需要搜索一个关键字(可能是名称、地址或城市等)。现在我需要创建一个存储过程来在数据库的所有表中进行搜索..!!
谁能帮我解决这个问题..!!
【问题讨论】:
标签: database search stored-procedures
没有数据库内置支持这种要求。因此,您必须根据环境和标准开发自己的解决方案。
现在,一个通用的解决方案是创建一个迭代所有表中的所有列并找到匹配列的过程。这通常意味着相当大的性能成本,具体取决于数据库的大小,必须避免或仔细检查性能。可以使用列类型检查等技术来减少搜索空间并避免不必要的成本。
根据您的数据库类型,可能还有其他解决方案可用。例如,如果您的数据库是 Oracle,我发现here 提供的技术很有用。此外,包括 Oracle 在内的最广泛使用的数据库支持全文搜索功能,可有效搜索文本列内的模式。您应该查阅您的数据库手册以找到一种有效的方法来完成这项工作。
【讨论】:
我来回答一下,
您必须选择您想要执行搜索功能的列,
然后开始这样的事情。
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 将有更有效的方法..
可能会帮助某人..
【讨论】: