[英]Perfect SQL Query for Searching products
我正在尋找完美的 SQL 查詢來搜索產品。
現在我正在使用WHERE LIKE '%...%'
但我遇到的問題是我找不到“相關”產品。
示例:如果我搜索Dampfbügeleisen
(它的德語),那么我只會得到包含該單詞的結果。
但我也想要其他以他自己的名字命名的產品。 像bügeleisen
因此,當我搜索Dampfbügeleisen
時,我將有Bügeleisen
和Dampfbügeleisen
作為結果,當我搜索Bügeleisen
時,我也會有Dampfbügeleisen
和Bügeleisen
僅使用 SQL 查詢就可以實現類似的事情嗎?
將 LIKE 與 CONCAT 一起使用,並使用 LOWER 使所有大小寫相同:
SELECT product
FROM products_table
WHERE 'Dampfbügeleisen' LIKE CONCAT('%', LOWER( product), '%') ;
您可以在此處查看有關類似問題的更多詳細信息:
https://dba.stackexchange.com/questions/203206/find-if-any-of-the-rows-partially-match-a-string
當有人尋找 Dampfbügeleisen 時,您也想只顯示 Bügeleisen。 因為 DampfBÜGELEISEN。 好吧,“Bügeleisen”是“鐵”,“Dampfbügeleisen”是“蒸汽熨斗”。 您將展示與用戶實際尋找的不匹配的熨斗。 您還將展示 Bügel(衣架)。 或者尋找 Kleiderständer(帽子架)並獲得 Kleid(連衣裙)。 我不認為這是一個好主意。
SQL 可以做到這一點,但這需要一些努力。 從哪里開始,在哪里停止? Dampfbügeleisen 包含dampf(蒸汽)和bügeleisen(鐵,工具)和bügel(衣架)和eisen(鐵,金屬)和eis(冰/冰淇淋)和ei(雞蛋)。
您真正想要的是更復雜的數據庫。 這從詞匯表開始。 在尋找窗簾時,您也想找到窗簾,反之亦然。 在尋找套頭衫時,您想找到毛衣,反之亦然。 在尋找套頭衫時,您也想找到連帽衫,但反之亦然(因為每件套頭衫都是套頭衫,但不是每件套頭衫都是套頭衫)。 好吧,我不是以英語為母語的人在這里可能是錯的,但你明白我的意思,並且可能會想出更好的例子。
word1 | word2 --------------+------------- pullover | sweater pullover | hoody sweater | pullover sweater | hoody curtain | drape drape | curtain ...
下一步是建議。 就像有人在尋找蒸汽熨斗時,您會展示蒸汽熨斗,但在列表的更下方,您可能會提供普通熨斗。 您可以在列表旁邊顯示熨衣板。 這又需要一個或多個包含產品之間關系的表。
SQL 非常適合選擇數據,但它不知道毛衣、套頭衫或熨斗是什么。 這些產品是否相關以及如何相關是您必須在數據庫表中告訴 DBMS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.