String concatenation with MySQL - Part 1
Posted March 4th, 2009 in MySql (Updated December 16th, 2009)
MySQL has a number of string handling functions including functions to concatenate text or database columns into a single column in the resultset. I'm always forgetting that the function is CONCAT and not CONCATENATE so maybe by writing about it I will actually remember...
Example data
The example table used in this post is called "products" and contains the following data:
+------------+------+--------------------+--------+ | product_id | name | description | price | +------------+------+--------------------+--------+ | 1 | Foo | Blah blah foo blah | 55.00 | | 2 | Bar | Blah blah bar blah | 102.00 | | 3 | Baz | Blah blah baz blah | 87.50 | | 4 | Bat | Blah blah bat blah | 42.00 | +------------+------+--------------------+--------+
Using concat to concatenate fields and strings
To return a resultset which contains the name and description columns as a single string column where the name and description values are separated by a dash, you could do this:
SELECT CONCAT(name, ' - ', description) FROM products;
which would give us a resultset like this:
+----------------------------------+ | CONCAT(name, ' - ', description) | +----------------------------------+ | Foo - Blah blah foo blah | | Bar - Blah blah bar blah | | Baz - Blah blah baz blah | | Bat - Blah blah bat blah | +----------------------------------+
Note that the column name is "CONCAT(name, ' - ', description)" so you'd either want to access the column using a numeric index or use "AS" syntax to give it a more user friendly name:
SELECT CONCAT(name, ' - ', description) AS name_description FROM products; +--------------------------+ | name_description | +--------------------------+ | Foo - Blah blah foo blah | | Bar - Blah blah bar blah | | Baz - Blah blah baz blah | | Bat - Blah blah bat blah | +--------------------------+
And finally, don't make my mistake and think the function is called CONCATENATE otherwise you'll get this error:
ERROR 1305 (42000): FUNCTION test.CONCATENATE does not exist
So that's how to use the CONCAT function in MySQL to concatenate strings. While this probably isn't a very realistic example to have used it does illustrate how to use the function and I've had to use it a number of times in my own projects.
CONCAT_WS
Be sure to read the follow up post to this one which looks at the CONCAT_WS function which uses a glue string to join the fields together.
Related posts:
- String concatenation with MySQL - Part 2 (Wednesday, December 16th 2009)
- Rounding numbers with MySQL (Wednesday, May 20th 2009)
- Maximum length for MySQL TEXT field types (Wednesday, February 4th 2009)
- Using SELECT REPLACE with MySQL (Wednesday, January 28th 2009)
- Upper case and lower case strings with MySQL (Tuesday, July 29th 2008)
- Find the length of the longest string in MySQL (Friday, May 9th 2008)
- Formatting Dates and Times with MySQL (Saturday, July 17th 2004)
Share or Bookmark
Share or Bookmark this page using the following services. You will need to have an account with the selected service in order to post links or bookmark this page.
Subscribe or Follow
Subscribe via RSS or email, or follow me on Facebook or Twitter below. The RSS icon takes you through to Feedburner where you can select the service or application to use.
