我有一列词,其元素如下:
id | word
---+---------
1 | cute
2 | advanced
3 | unusual假设我想对单词“可爱”或“最可爱”进行查询。我想做这样的事情:
SELECT * FROM words WHERE word% LIKE 'cutest'当然,我意识到这不是有效的SQL语法,但我想匹配一个超级字符串,而不是子字符串。
我不想使用相似包,因为它将匹配诸如“不可爱”之类的东西,而我只想指定通配符应该放在字段的末尾。
这能在Postgres实现吗?
发布于 2022-03-02 04:43:09
模式在LIKE的右边。所以:
SELECT * FROM words
WHERE 'cutest' LIKE word || '%'
AND word Like 'cute%';我添加了另一个WHERE条件,以消除‘削减’或只是'c‘这样的单词中的假阳性。而且,这可以(而且通常会)仍然使用索引,而表达式'cutest' LIKE word || '%'绝对不能。
请注意,‘可爱’并不符合条件。你的问题有点矛盾。
请参见:
要将你的单词中的特殊字符视为非特殊字符,你必须相应地转义。请参见:
https://stackoverflow.com/questions/71317436
复制相似问题