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