SQL LIKE er en fremragende funktion til wildcard søgning. Desværre giver den visse udfordringer, hvis LIKE udtrykket ikke indeholder noget wildcard tegn og kolonnen, der skal søges i er en CHAR kolonne. Heldigvis findes der en ret fiks løsning.
Antag at tabel PERSON indeholder en kolonne kaldet FIRSTNAME erklæret som CHAR(20). I dit program har du lavet et SQL-kald, der bruges til at finde fornavne ud fra et wildcard:
variablen firstNameFilter skal du erklære, som det der svarer til en VARCHAR(20) kolonne. Når du udfylder den skal du sørge for, at fjerne efterstillede blanke. Hvis det sidste tegn i firstNameFilter er et %-tegn, så virker ovenstående SQL-kald fint. Desværre virker det knap så fint i alle andre tilfælde med mindre fornavnet er 20 tegn langt, og dem er der jo ikke så mange af. Problemet er de efterstillede blanke i kolonnen FIRSTNAME. Det kan heldigvis nemt kureres således:
Nu vil wildcard-søgningen virke korrekt uanset hvilken værdi, firstNameFilter tildeles. Siden DB2 version 8 er det også så heldigt, at DB2 vil udnytte et eventuelt index på FIRSTNAME, også selv om FIRSTNAME er blevet omgivet af en funktion.