Mam następujący test ciąg engine/mail/key
i tabeli, która wygląda następująco:Znajdź najlepszy wiersz pasujący w MySQL (InnoDB)
+-------------+
| query |
+-------------+
| engine |
| engine/pdf |
| engine/mail |
+-------------+
chcę, aby znaleźć najlepsze dopasowanie wiersz. Najlepsze dopasowanie jest określane przez najbardziej pasujące znaki od początku ciągu/wiersza.
Skonstruowałem RegExp, ale oczywiście pasuje do wszystkich wierszy i nie dostarczy mi żadnych informacji o tym, który pasuje do większości znaków/części.
Regexp: ^engine(/mail(/key)?)?
miałem inne wyobrażenie na temat korzystania FIND_IN_SET
funkcji MySQL tak:
`FIND_IN_SET(query,'engine,engine/mail,engine/mail/key')`
i porządku wynik przez to wyjście.
To by działało, ale nie jest to w żaden sposób miłe rozwiązanie. Czy ktokolwiek ma lepszy pomysł na ten temat?
To niczego nie pasuje. Również porządkowanie według 'LENGTH (zapytanie)' nie jest wystarczające, ponieważ może być wiersz taki jak "engine/website", który zostałby następnie wybrany przez 'engine/mail'. –
Przepraszamy, poprawiono zapytanie, aby teraz działało. Wypróbuj teraz, aby sprawdzić, czy przynosi oczekiwane rezultaty. –
Dzięki za to, znacznie lepiej niż hack 'FIND_IN_SET'! Używanie "LIKE" w inny sposób jak ten jest naprawdę fajną sztuczką! –