簡體   English   中英

完美 SQL 查詢搜索產品

[英]Perfect SQL Query for Searching products

我正在尋找完美的 SQL 查詢來搜索產品。

現在我正在使用WHERE LIKE '%...%'但我遇到的問題是我找不到“相關”產品。

示例:如果我搜索Dampfbügeleisen (它的德語),那么我只會得到包含該單詞的結果。

但我也想要其他以他自己的名字命名的產品。 bügeleisen

因此,當我搜索Dampfbügeleisen時,我將有BügeleisenDampfbügeleisen作為結果,當我搜索Bügeleisen時,我也會有DampfbügeleisenBü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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM