I have a teachers table that looks like this:
| teacherid | teacherfname | teacherlname | salary |
|---|---|---|---|
| 1 | Alexander | Bennett | 55.30 |
I would like to return any record that contains a given string in the teacherfname, teacherlname and salary columns.
What I have right now (this returns exact match only):
SELECT * FROM `teachers` WHERE 'Alexander' IN (teacherfname, teacherlname, salary)
What I would like to do is something like this (this would not return anything):
SELECT * FROM `teachers` WHERE '%Alex%' IN (teacherfname, teacherlname, salary)
What do I need to make the query work? Thank you.
Advertisement
Answer
I would assume that the value %Alex% won’t ever match the salary column. If you want to search for any rows where the first name or last name include “Alex” I would use simple pattern matching, and force all comparisons to use the same letter case.
For example:
SELECT * FROM `teachers` WHERE lower(teacherfname) like '%alex%' or lower(teacherlname) like '%alex%'