sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder prefix-jokertecken som '*abc' med match-emot

Matchning fungerar inte med startjokertecken, så matchning med *abc* kommer inte att fungera. Du måste använda LIKE för att uppnå detta:

SELECT * FROM user WHERE user_login LIKE '%abc';

Detta kommer dock att gå väldigt långsamt.

Om du verkligen behöver matcha för slutet av strängen, och du måste göra detta ofta medan framförandet dödar dig, skulle en lösning vara att skapa en separat kolumn där du vänder om strängarna, så du fick:

user_login user_login_rev
xyzabc     cbazyx

Sedan, istället för att leta efter '%abc' , kan du leta efter 'cba%' vilket är mycket snabbare om kolumnen är indexerad. Och du kan återigen använda MATCH om du vill söka efter 'cba*' . Du behöver bara vända på söksträngen också.



  1. FEL 1054 (42S22):Okänd kolumn '‍‍' i 'fältlista'

  2. MariaDB JSON_MERGE() Förklarad

  3. SQL-kolumnnamn samma som PL/SQL-variabelnamn - Hur kan detta göras i en select-sats?

  4. Undvik att upprepa poster som visas i MySQL / PHP