有什么方法可以告诉在数据库值中找到与 LIKE 匹配的匹配项的数量吗?

Voi*_*ing 2 sql-server-compact relational-theory

有什么方法可以查询 SQL-Server-CE 数据库,该数据库将使用 LIKE (或 MATCH AGAINST 或我不知道的任何其他方法)返回在单元格值中找到的匹配数?

示例表,“exampleTable”:

**ObjectID**        **value**
     1           I Love Lemonade
     2             I Love Love
Run Code Online (Sandbox Code Playgroud)

使用像这样的查询: SELECT * FROM exampleTable WHERE value LIKE '%love%',我可以轻松找到值包含单词(或有一个单词的一部分包含单词)“love”的任何条目。我希望能够知道在匹配字段中找到了“多少”匹配项(为了搜索优先级),以便它们可以显示为更相关。我意识到我可能会从一个简单的查询中提出很多要求,但是,我也知道 SQL 有多么强大,所以我想我会问这是否可能,如果不可能,是否有任何其他方法我可能会这样做采取(这不会强迫我重写数据库)。

我想过以某种方式使用子查询,但没有办法(我已经找到)将“LIKE”和“IN”结合起来。另外,我什至不确定使用子查询是否可以完成工作,因为我正在使用一个关系数据库,其中一个主表与其他 8 个表相关,并且“其他 8 个”表具有我想要搜索的值,但主表有我需要的位置(尽管,我想我在这些“8个其他”表中添加“位置”列没有问题,因为它在其他区域也很有帮助)。

完全有可能我没有将关系数据库的“关系”部分设计得十全十美,但这是我第一次自己设计(尽管肯定没有使用过)关系数据库,而且,至少,它与我网站的后端配合良好(是的,该网站是一个私有的部分 CMS)。

感谢您的帮助,感谢您的宝贵时间!

SQL*_*Fox 5

您可以比较包含和不包含要搜索的文本的字符串长度:

  select
        ObjectID
        ,value
        ,(len(value) - len(replace(value,'love',''))) / 4 as occurs
        from exampleTable
        where value like '%love%'
Run Code Online (Sandbox Code Playgroud)