我正在开发一个数据库,我有一个搜索关键字的情况(可能是名称,地址或城市等)。现在我需要创建一个存储过程来在数据库的所有表中进行搜索。!!
任何人都可以帮助我摆脱这个问题.. !!
答案 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将有更多有效的方法..
可能对某人有帮助..