In my table I have a field “firstname” and a field “lastname”. I would like to select all records where firstname + space + lastname is a certain value.
I’ve tried this:
$sql = "SELECT * FROM sam_users WHERE (user_firstname + ' ' + user_lastname LIKE ?)";
But this isn’t working. With Google I’ve found something about using ||, but I don’t really understand how I should use that operator. Note that I don’t want to use an or-operator (what || is in many languages), but something to concatenate 2 fields (with a space between them) and using a LIKE on that.
Thanks!
With MySQL, you can use
CONCAT:or
CONCAT_WS(which ignores NULL values):However, MySQL won’t be able to use any indices when performing this query. If the value of the pattern argument to
LIKEbegins with a wildcard, MySQL won’t be able to use indices, so comparing to a generated value (instead of a column) won’t make a difference.You can also set the MySQL server SQL mode to “ANSI” or “PIPES_AS_CONCAT” to use the
||operator for string concatenation.This sets the SQL mode for the current session only. You’ll need to set
@@sql_modeeach time you connect. If you wish to unset ‘PIPES_AS_CONCAT’ mode in a session:MySQL appears to remove any extra commas in
@@sql_mode, so you don’t need to worry about them.Don’t use
SELECT *; select only the columns you need.