Tja, det är bara dubbel-escape, men ja det fungerar och här är anledningen:i MySQL är det ett andra lager av escape involverat när du använder LIKE operatör.
services LIKE '%L\\\\u00e4mm\\\\u00f6n%'
Att analysera den bokstavliga MySQL-strängen ger dig en jämförelse med LIKE-frågan %L\\u00e4mm\\u00f6n% . Eftersom MySQL behandlar \ i en LIKE-fråga som en escape, som faktiskt matchar den bokstavliga strängen som innehåller L\u00e4mm\u00f6n .
Anledningen till detta är så att du kan matcha strängar mot ett frågeuttryck som innehåller en bokstavlig % eller _ karaktär. Till exempel om jag vill söka i en kolumn efter den bokstavliga strängen 100% , jag kan matcha det mot 100\% (skriven i en fråga som '100\\%' ) och se till att jag verkligen får hundra procent och bara inte någon sträng som börjar med hundra.
Det är olyckligt att MySQL använder snedstreck för både sin LIKE-fråga-escapening och dess sträng-literal-escape, särskilt med tanke på att du förmodligen skriver i ett omslutande programmeringsspråk som också använder dem, och slutar med faktisk trippelkodning, som ser ut som "services LIKE '%L\\\\\\\\u00e4mm\\\\\\\\u00f6n%'" - argh!
Det är dubbelt olyckligt med tanke på att detta beteende inte överensstämmer med ANSI SQL och inte fungerar i någon annan databas. ANSI SQL säger att det inte finns något escape-tecken i LIKE-frågor som standard, så om du vill matcha en bokstavlig % eller _ du måste välja in genom att nominera en egen flyktkaraktär, t.ex.:
something LIKE '100=%' ESCAPE '='
För korsdatabaskompatibilitet är det bäst att alltid använda LIKE ...ESCAPE form, och välj något annat än det hemska snedstrecket! (Asides - MySQL:s omvända snedstreck för bokstavlig escape av SQL-strängar är inte heller ANSI-konforma! Men du kan stänga av det felaktiga beteendet med NO_BACKSLASH_ESCAPES sql_mode-inställningen.)
En bättre idé skulle förmodligen vara att bryta services ut i en andra tabell istället för att klämma ihop dem i en enda strängkolumn - dvs. lägg ditt schema i First Normal Form. Då kan du få en enkel sökning av individuella värden istället för att behöva göra en långsam full-tabell-skanning understräng-matchning.