【发布时间】:2023-03-24 12:46:01
【问题描述】:
我有一个充满字符串的表 (TEXT),我喜欢获取同一个表中任何其他字符串的子字符串的所有字符串。例如,如果我的表中有这三个字符串:
WORD WORD_ID
cup 0
cake 1
cupcake 2
根据我的查询,我想得到这样的结果:
WORD WORD_ID SUBSTRING SUBSTRING_ID
cupcake 2 cup 0
cupcake 2 cake 1
我知道我可以使用两个循环(使用 Python 或 JS)来执行此操作,方法是遍历表中的每个单词并将其与同一个表中的每个单词进行匹配,但我不确定如何使用SQL(就此而言是 PostgreSQL)。
【问题讨论】:
-
看起来像一个使用
word LIKE '%'+substring+'%'的条件连接。 -
感谢你们的 cmets,为我指明了正确的方向。
-
这个查询对于大表来说可能非常昂贵。请澄清:您的标题是您需要的(
check if a string is the substring of any other string in the same table),还是您需要的示例(列出所有匹配的组合)?语义差异很细微,但结果和性能上的差异可能巨大。无论哪种方式,都有更好的解决方案。 -
@shawnt00:连接字符串的运算符在 SQL 中是
||,而不是+ -
@a_horse 这只是我多年来使用 SQL Server 的一个习惯。我认为这个想法仍然存在。实际上我注意到戈登甚至在他自己的回答中混合了两者:)
标签: sql postgresql loops pattern-matching string-function