是否可以在所有列上搜索单词以进行单词出现,而不重复像运算符一样?

时间:2013-07-15 06:26:26

标签: sql postgresql

我想在表格中搜索出现的单词。在我的表中有80列可用。有没有可能搜索一个单词而不重复所有列的like运算符。我试图在网上弄清楚这一点,但我找不到解决方案。 提前致谢。

2 个答案:

答案 0 :(得分:4)

这几乎可以肯定意味着您的架构中存在重大设计问题,需要进一步规范化。

如果搜索超过80列的值是有意义的......好吧,是的,重新考虑你的架构。

理论中你可以做到:

SELECT *
FROM the_table
WHERE the_table::text LIKE '%word%';

将整个元组转换为其文本形式,然后进行搜索。不过,这实际上是一个可怕的想法;它将包括所有列,而不仅仅是您想要的文本列,它将为行文字添加引号和其他格式,并且它不会告诉您哪个列出现了哪个列英寸

更安全的方法通常是使用in-database full-text search,它支持多列搜索。超过80列因为你而不得不重复所有列,但这只是唯一理智的方式。如果麻烦太多,您可能需要修复架构设计。

答案 1 :(得分:-2)

试试这个,

以下基于Columnwise的查询。

select COUNT(*) from dbo.TableNAme
where PatIndex('searchword',ColumnName) > 0