ho la seguente stringa di prova engine/mail/key
e un tavolo che assomiglia a questo:Trova miglior riga corrispondente in MySQL (InnoDB)
+-------------+
| query |
+-------------+
| engine |
| engine/pdf |
| engine/mail |
+-------------+
voglio trovare il miglior riga corrispondente. La corrispondenza migliore viene specificata dai caratteri più corrispondenti dall'inizio della stringa/riga.
Ho creato un RegExp, ma ovviamente corrisponde a tutte le righe e non mi fornisce alcuna informazione su quale sia il maggior numero di caratteri/parti.
Regexp: ^engine(/mail(/key)?)?
ho avuto un altra idea su come utilizzare la funzione di MySQL FIND_IN_SET
come questo:
`FIND_IN_SET(query,'engine,engine/mail,engine/mail/key')`
e l'ordine il risultato per il suo output.
Ciò funzionerebbe, ma non è in alcun modo una buona soluzione. Qualcuno ha un'idea migliore di questo?
Questo non corrisponde nulla. Anche ordinare con 'LENGTH (query)' non è sufficiente, dato che potrebbe esserci una riga come 'engine/website' che verrebbe quindi scelta su' engine/mail'. –
Siamo spiacenti, ho corretto la query in modo che venga ora eseguita. Provalo ora per vedere se ti sta dando i risultati che ti aspetti. –
Grazie per questo, molto meglio di "FIND_IN_SET' hack! Usare 'LIKE' in un altro modo come questo è davvero un trucco perfetto! –