我有一个编码问题,想知道是否有以下场景的sql实现:
我想在文本列中搜索某些单词,并根据找到的单个单词数对结果进行排序。例如:
让我们找到一行包含:a b s
a b b c d e s
b d s w d a s
x d s g w d s
f e h w d s a
预期结果是:
a b b c d e s (it contains all 3 words)
b d s w d a s (it contains all 3 words)
f e h w d s a (it contains 2 words)
x d s g w d s (it contains 1 word)
是否建议您在php中执行类似操作,或者是否有一种有效的sql方法来执行此操作?
3条答案
按热度按时间f5emj3cl1#
可以使用布尔表达式执行此操作:
如果单词应该用空格隔开,那么:
最后,如果你有这类问题,那么你应该做以下两件事之一:
如果文本真的是文本,那么请查看全文搜索功能。
如果文本实际上是关键字或用户之类的列表,那么请修复数据模型并使用连接/关联表。
nhhxz33t2#
如果在sql中完成,我会考虑使用允许排名的全文搜索(http://msdn.microsoft.com/en-us/library/cc879245.aspx)
ymzxtsji3#
我的想法:
使用solution:sql将值拆分为多行来转换为不同的单词列表
为每个原始行计算找到的行数。