我有一列單詞,其元素如下所示:
id | word
--- ---------
1 | cute
2 | advanced
3 | unusual
假設我想查詢“cuter”或“cutest”這兩個詞。我想做類似的事情:
SELECT * FROM words WHERE word% LIKE 'cutest'
當然,我意識到這不是有效的 SQL 語法,但我想匹配超字串,而不是子字串。
我不想使用相似性包,因為它會匹配“notcute”之類的東西,而我只想指定通配符應該放在欄位的末尾。
這可以在 Postgres 中實作嗎?
uj5u.com熱心網友回復:
該模式轉到 的右側LIKE。所以:
SELECT * FROM words
WHERE 'cutest' LIKE word || '%'
AND word Like 'cute%';
我添加了另一個WHERE條件來消除“cut”或“c”等詞的誤報。此外,這可以(并且通常會)仍然使用索引,而運算式'cutest' LIKE word || '%'絕對不能。
請注意,“可愛”不符合條件。你的問題在那里有點不一致。
看:
- PostgreSQL LIKE 查詢性能變化
要將單詞中的特殊字符視為非特殊字符,您必須相應地轉義。看:
- 正則運算式或 LIKE 模式的轉義函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/436584.html
標籤:sql PostgreSQL 类sql 匹配
下一篇:串列理解與自我參考的組合
