用于搜索最长公共前缀的 SQL 查询

Posted

技术标签:

【中文标题】用于搜索最长公共前缀的 SQL 查询【英文标题】:SQL query to search for longest common prefixes 【发布时间】:2012-11-02 17:25:48 【问题描述】:

在我的数据库中,我有一个表 PRODUCT,其中包含一个 VARCHAR(255) 列 PRODNAME。在该列中,我存储了我所有的产品名称。

现在我必须实现一个简单的搜索引擎来查看该列。我想使用 LIKE 语句作为精确匹配 == 对字符串的限制太严格,但我只想匹配 PRODNAME 列文本内的前缀。怎么做?谢谢!

【问题讨论】:

告诉我们what you have tried。 VARCHAR(255) 当然。感谢您指出错字 【参考方案1】:

您可以使用通配符(百分号),即。

SELECT * FROM PRODUCT WHERE PRODNAME LIKE 'prefix%'

要搜索所有子字符串,请使用:

SELECT * FROM PRODUCT WHERE PRODNAME LIKE '%substring%'

或后缀:

SELECT * FROM PRODUCT WHERE PRODNAME LIKE '%suffix'

【讨论】:

没关系,但是在搜索自然语言文本的前缀时呢? LIKE 操作数是否适用于空格字符? 是的,只要在空格后添加通配符即可。为什么不试试看会发生什么? 这里我的查询:从产品中选择 * where prodname LIKE "*%" OR prodname LIKE "*%" ... where , 等。是根据用户在搜索中输入的实际字符串计算的文本标记 不确定为什么要在标记之前添加星号,但是可以,您可以将用户输入作为变量并使用它来构建查询。

以上是关于用于搜索最长公共前缀的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

python(leetcode)-14最长公共前缀

最长公共前缀

在 ORACLE 中搜索最长前缀的最快方法

字符串的公共前缀对Mysql B+树查询影响回溯分析

字典树(前缀树)--Trie

sql 这些是用于更新WordPress数据库中的URL的各种SQL查询。这些查询假设表前缀是标准的`wp_`