
- MySQL - Home
- MySQL - Introduction
- MySQL - Features
- MySQL - Versions
- MySQL - Variables
- MySQL - Installation
- MySQL - Administration
- MySQL - PHP Syntax
- MySQL - Node.js Syntax
- MySQL - Java Syntax
- MySQL - Python Syntax
- MySQL - Connection
- MySQL - Workbench
- MySQL Databases
- MySQL - Create Database
- MySQL - Drop Database
- MySQL - Select Database
- MySQL - Show Database
- MySQL - Copy Database
- MySQL - Database Export
- MySQL - Database Import
- MySQL - Database Info
- MySQL Users
- MySQL - Create Users
- MySQL - Drop Users
- MySQL - Show Users
- MySQL - Change Password
- MySQL - Grant Privileges
- MySQL - Show Privileges
- MySQL - Revoke Privileges
- MySQL - Lock User Account
- MySQL - Unlock User Account
- MySQL Tables
- MySQL - Create Tables
- MySQL - Show Tables
- MySQL - Alter Tables
- MySQL - Rename Tables
- MySQL - Clone Tables
- MySQL - Truncate Tables
- MySQL - Temporary Tables
- MySQL - Repair Tables
- MySQL - Describe Tables
- MySQL - Add/Delete Columns
- MySQL - Show Columns
- MySQL - Rename Columns
- MySQL - Table Locking
- MySQL - Drop Tables
- MySQL - Derived Tables
- MySQL Queries
- MySQL - Queries
- MySQL - Constraints
- MySQL - Insert Query
- MySQL - Select Query
- MySQL - Update Query
- MySQL - Delete Query
- MySQL - Replace Query
- MySQL - Insert Ignore
- MySQL - Insert on Duplicate Key Update
- MySQL - Insert Into Select
- MySQL Indexes
- MySQL - Indexes
- MySQL - Create Index
- MySQL - Drop Index
- MySQL - Show Indexes
- MySQL - Unique Index
- MySQL - Clustered Index
- MySQL - Non-Clustered Index
- MySQL Operators and Clauses
- MySQL - Where Clause
- MySQL - Limit Clause
- MySQL - Distinct Clause
- MySQL - Order By Clause
- MySQL - Group By Clause
- MySQL - Having Clause
- MySQL - AND Operator
- MySQL - OR Operator
- MySQL - Like Operator
- MySQL - IN Operator
- MySQL - ANY Operator
- MySQL - EXISTS Operator
- MySQL - NOT Operator
- MySQL - NOT EQUAL Operator
- MySQL - IS NULL Operator
- MySQL - IS NOT NULL Operator
- MySQL - Between Operator
- MySQL - UNION Operator
- MySQL - UNION vs UNION ALL
- MySQL - MINUS Operator
- MySQL - INTERSECT Operator
- MySQL - INTERVAL Operator
- MySQL Joins
- MySQL - Using Joins
- MySQL - Inner Join
- MySQL - Left Join
- MySQL - Right Join
- MySQL - Cross Join
- MySQL - Full Join
- MySQL - Self Join
- MySQL - Delete Join
- MySQL - Update Join
- MySQL - Union vs Join
- MySQL Keys
- MySQL - Unique Key
- MySQL - Primary Key
- MySQL - Foreign Key
- MySQL - Composite Key
- MySQL - Alternate Key
- MySQL Triggers
- MySQL - Triggers
- MySQL - Create Trigger
- MySQL - Show Trigger
- MySQL - Drop Trigger
- MySQL - Before Insert Trigger
- MySQL - After Insert Trigger
- MySQL - Before Update Trigger
- MySQL - After Update Trigger
- MySQL - Before Delete Trigger
- MySQL - After Delete Trigger
- MySQL Data Types
- MySQL - Data Types
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL Regular Expressions
- MySQL - Regular Expressions
- MySQL - RLIKE Operator
- MySQL - NOT LIKE Operator
- MySQL - NOT REGEXP Operator
- MySQL - regexp_instr() Function
- MySQL - regexp_like() Function
- MySQL - regexp_replace() Function
- MySQL - regexp_substr() Function
- MySQL Fulltext Search
- MySQL - Fulltext Search
- MySQL - Natural Language Fulltext Search
- MySQL - Boolean Fulltext Search
- MySQL - Query Expansion Fulltext Search
- MySQL - ngram Fulltext Parser
- MySQL Functions & Operators
- MySQL - Date and Time Functions
- MySQL - Arithmetic Operators
- MySQL - Numeric Functions
- MySQL - String Functions
- MySQL - Aggregate Functions
- MySQL Misc Concepts
- MySQL - NULL Values
- MySQL - Transactions
- MySQL - Using Sequences
- MySQL - Handling Duplicates
- MySQL - SQL Injection
- MySQL - SubQuery
- MySQL - Comments
- MySQL - Check Constraints
- MySQL - Storage Engines
- MySQL - Export Table into CSV File
- MySQL - Import CSV File into Database
- MySQL - UUID
- MySQL - Common Table Expressions
- MySQL - On Delete Cascade
- MySQL - Upsert
- MySQL - Horizontal Partitioning
- MySQL - Vertical Partitioning
- MySQL - Cursor
- MySQL - Stored Functions
- MySQL - Signal
- MySQL - Resignal
- MySQL - Character Set
- MySQL - Collation
- MySQL - Wildcards
- MySQL - Alias
- MySQL - ROLLUP
- MySQL - Today Date
- MySQL - Literals
- MySQL - Stored Procedure
- MySQL - Explain
- MySQL - JSON
- MySQL - Standard Deviation
- MySQL - Find Duplicate Records
- MySQL - Delete Duplicate Records
- MySQL - Select Random Records
- MySQL - Show Processlist
- MySQL - Change Column Type
- MySQL - Reset Auto-Increment
- MySQL - Coalesce() Function
MySQL CONCAT_WS() Function
The MySQL CONCAT_WS() function, which stands for "Concatenate With Separator", is used to concatenate (combine) multiple strings into a single string, separating them with a specified separator.
The first argument of this function is considered as the separator. It can be a string or a numerical value. If the separator value is NULL, this function returns NULL.
If there are any empty stings in the string values, they will be included in the result. But if you pass NULL as a string value (after the separator), it is neglected.
The string functions in SQL are used to manipulate the string values. There are many string functions specified for SQL and CONCAT_WS() is one of them.
Syntax
Following is the syntax of MySQL CONCAT_WS() function −
CONCAT_WS(separator,str1,str2,...);
Parameters
This function takes a separator and multiple string values as parameter.
Return Value
This function returns the concatenation of the given strings with the specified separator.
Example
In this example, we are using the CONCAT_WS() function to concatenate the strings 'tutorials' and 'point' with an underscore as the separator −
SELECT CONCAT_WS('_','tutorials', 'point');
Following is the output of the above code −
CONCAT_WS('_','tutorials', 'point') |
---|
tutorials_point |
Example
Here is another example where we are passing a space character as the separator, joining the strings 'Hello', 'how', 'are', and 'you' −
SELECT CONCAT_WS(' ','Hello', 'how', 'are', 'you');
Output of the above code is as shown below −
CONCAT_WS(' ','Hello', 'how', 'are', 'you') |
---|
Hello how are you |
Example
You can also provide numerical values as separators, as shown below −
SELECT CONCAT_WS('999', 'Hello', 'how', 'are', 'you');
The output obtained is as shown below −
CONCAT_WS('999', 'Hello', 'how', 'are', 'you') |
---|
Hello999how999are999you |
Example
If you pass a NULL value as a separator, it returns NULL −
SELECT CONCAT_WS(NULL, 'test', 'sample');
The result produced is as follows −
CONCAT_WS(NULL, 'test', 'sample') |
---|
NULL |
Example
In the following example, we are passing an empty string after the separator and, as you observe it is included in the result −
SELECT CONCAT_WS('_____','str1','str2', 'str3', ' ', 'str4');
We get the output as follows −
CONCAT_WS('_____','str1','str2', 'str3', ' ', 'str4') |
---|
str1_____str2_____str3_____ _____str4 |
Example
If you provide NULL as a string value after the separator, it is ignored and not included in the result −
SELECT CONCAT_WS('_____','str1','str2', 'str3', NULL, 'str4');
The output obtained is as shown below −
CONCAT_WS('_____','str1','str2', 'str3', NULL, 'str4') |
---|
str1_____str2_____str3_____str4 |
Example
You can also pass column names of a table as arguments to this function (along with the separator) and concatenate/join the values in the given columns.
Let us create a table named "PLAYERS" and insert records into it using CREATE and INSERT statements as shown below −
CREATE TABLE PLAYERS( ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Date_Of_Birth date, Place_Of_Birth VARCHAR(255), Country VARCHAR(255), PRIMARY KEY (ID) );
Now, let us insert records into it using the INSERT statement −
INSERT INTO PLAYERS VALUES (1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India'), (2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica'), (3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka'), (4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India'), (5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India'), (6, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');
The PLAYERS table obtained is as follows −
ID | First_Name | Last_Name | Date_Of_Birth | Place_Of_Birth | Country |
---|---|---|---|---|---|
1 | Shikhar | Dhawan | 1981-12-05 | Delhi | India |
2 | Jonathan | Trott | 1981-04-22 | CapeTown | SouthAfrica |
3 | Kumara | Sangakkara | 1977-10-27 | Matale | Srilanka |
4 | Virat | Kohli | 1988-11-05 | Delhi | India |
5 | Rohit | Sharma | 1987-04-30 | Nagpur | India |
6 | James | Anderson | 1982-06-30 | Burnley | England |
Following query concatenates/joins the First_Name and Last_Name values of the PLAYERS table using an empty string as the separator and displays the result as FullName −
SELECT CONCAT (' ', First_Name, Last_Name) as FullName, Country FROM PLAYERS;
Output
After executing the above code, we get the following output −
FullName | Country |
---|---|
Shikhar Dhawan | India |
Jonathan Trott | SouthAfrica |
Kumara Sangakkara | Srilanka |
Virat Kohli | India |
Rohit Sharma | India |
James Anderson | England |
Example
Here, we are concatenating more than 2 columns i.e. "First_name", "Last_name", and "Country" with an empty space (" ") as a separator using the following query −
SELECT CONCAT (' ', First_Name, Last_Name, Country) as FullName_and_Country FROM PLAYERS;
Output
The output displayed is as shown below −
FullName_and_Country |
---|
Shikhar Dhawan India |
Jonathan Trott SouthAfrica |
Kumara Sangakkara Srilanka |
Virat Kohli India |
Rohit Sharma India |
James Anderson England |