📖 Scenario: You are managing a small customer database for a local bookstore. You want to create a full name field by combining first and last names, and also create a contact info field by combining the full name with the email address, separated by a comma.
🎯 Goal: Build SQL queries that use CONCAT and CONCAT_WS functions to combine text columns into new fields.
📋 What You'll Learn
Create a table called customers with columns id, first_name, last_name, and email.
Insert three specific customer records into the customers table.
Write a query using CONCAT to create a full_name column by joining first_name and last_name with a space.
Write a query using CONCAT_WS to create a contact_info column by joining full_name and email separated by a comma and space.
💡 Why This Matters
🌍 Real World
Combining text fields like names and contact info is common in customer databases, reports, and user interfaces.
💼 Career
Knowing how to use CONCAT and CONCAT_WS helps database developers and analysts prepare readable and formatted data outputs.
Progress0 / 4 steps
1
Create the customers table and insert data
Create a table called customers with columns id (integer), first_name (text), last_name (text), and email (text). Then insert these three rows exactly: (1, 'Alice', 'Johnson', 'alice@example.com'), (2, 'Bob', 'Smith', 'bob@example.com'), and (3, 'Carol', 'Davis', 'carol@example.com').
SQL
Hint
Use CREATE TABLE to define the table and INSERT INTO to add the rows.
2
Add a query to combine first and last names
Write a SQL query that selects id and creates a new column called full_name by using CONCAT to join first_name and last_name with a space between them from the customers table.
SQL
Hint
Use CONCAT with a space string ' ' between the names.
3
Add a query to combine full name and email with CONCAT_WS
Write a SQL query that selects id and creates a new column called contact_info by using CONCAT_WS with a comma and space separator to join first_name and last_name as a full name, and email from the customers table.
SQL
Hint
Use CONCAT_WS with ', ' as the separator and nest CONCAT for the full name.
4
Combine all queries into one final query
Write a single SQL query that selects id, creates full_name by concatenating first_name and last_name with a space using CONCAT, and creates contact_info by concatenating full_name and email separated by a comma and space using CONCAT_WS from the customers table.
SQL
Hint
Combine the previous two queries into one SELECT statement with multiple columns.
Practice
(1/5)
1. What is the main difference between CONCAT and CONCAT_WS in SQL?
easy
A. CONCAT joins strings directly; CONCAT_WS adds a separator between strings.
B. CONCAT adds a separator; CONCAT_WS joins strings directly.
C. CONCAT works only with numbers; CONCAT_WS works only with text.
D. CONCAT is used for arrays; CONCAT_WS is used for tables.
Solution
Step 1: Understand CONCAT behavior
CONCAT joins text parts directly without any separator.
Step 2: Understand CONCAT_WS behavior
CONCAT_WS joins text parts but inserts a separator you specify between them.
Final Answer:
CONCAT joins strings directly; CONCAT_WS adds a separator between strings. -> Option A
Quick Check:
Difference = separator usage [OK]
Hint: Remember WS means With Separator [OK]
Common Mistakes:
Thinking CONCAT_WS adds no separator
Confusing which function adds separators
Assuming CONCAT works only on numbers
2. Which of the following is the correct syntax to join columns first_name and last_name with a space using CONCAT_WS?
easy
A. CONCAT_WS(' ', first_name + last_name)
B. CONCAT_WS(first_name, last_name, ' ')
C. CONCAT_WS(' ', first_name, last_name)
D. CONCAT_WS(first_name || ' ' || last_name)
Solution
Step 1: Recall CONCAT_WS syntax
The first argument is the separator string, followed by the columns to join.
Step 2: Match syntax to options
CONCAT_WS(' ', first_name, last_name) correctly uses a space as separator and then the two columns.
Final Answer:
CONCAT_WS(' ', first_name, last_name) -> Option C
Quick Check:
Separator first, then columns [OK]
Hint: Separator is always first argument in CONCAT_WS [OK]
Common Mistakes:
Putting separator last instead of first
Using operators inside CONCAT_WS arguments
Passing concatenated string as single argument
3. Given a table users with columns city = 'Paris', country = 'France', what is the result of this query?
SELECT CONCAT(city, ', ', country) AS location FROM users;
medium
A. 'Paris, France'
B. 'Paris , France'
C. 'Paris,France'
D. 'ParisFrance'
Solution
Step 1: Understand CONCAT arguments
CONCAT joins city, then the string ', ', then country exactly as given.
Step 2: Combine values
city = 'Paris', separator = ', ', country = 'France' results in 'Paris, France'.
Final Answer:
'Paris, France' -> Option A
Quick Check:
CONCAT joins exactly as given [OK]
Hint: CONCAT joins exactly, including spaces in strings [OK]
Common Mistakes:
Ignoring spaces inside separator string
Assuming CONCAT adds spaces automatically
Confusing CONCAT_WS with CONCAT
4. Identify the error in this SQL query:
SELECT CONCAT_WS(first_name, ' ', last_name) FROM employees;
medium
A. Using CONCAT_WS instead of CONCAT
B. Missing separator argument as first parameter
C. Incorrect column names
D. No error, query is correct
Solution
Step 1: Check CONCAT_WS syntax
First argument must be the separator string, but here first_name is used instead.
Step 2: Identify correct usage
Separator should be a string like ' ', then columns follow.
Final Answer:
Missing separator argument as first parameter -> Option B
Quick Check:
Separator must be first argument [OK]
Hint: Separator always first in CONCAT_WS [OK]
Common Mistakes:
Putting column name as separator
Swapping argument order
Assuming CONCAT_WS works like CONCAT
5. You want to create a full address string from columns street, city, and zipcode separated by commas. Which query correctly uses CONCAT_WS to achieve this, and what will be the output if street = '123 Main St', city = NULL, zipcode = '90210'?
hard
A. SELECT CONCAT_WS(', ', street, city, zipcode) AS address FROM table; Output: '123 Main St, NULL, 90210'
B. SELECT CONCAT_WS(', ', street, city, zipcode) AS address FROM table; Output: '123 Main St, , 90210'
C. SELECT CONCAT(street, ', ', city, ', ', zipcode) AS address FROM table; Output: '123 Main St, , 90210'
D. SELECT CONCAT_WS(', ', street, city, zipcode) AS address FROM table; Output: '123 Main St, 90210'
Solution
Step 1: Understand CONCAT_WS behavior with NULLs
CONCAT_WS skips NULL values and does not add extra separators for them.
Step 2: Apply to given data
With city = NULL, CONCAT_WS(', ', street, city, zipcode) returns '123 Main St, 90210' without extra commas.
Final Answer:
SELECT CONCAT_WS(', ', street, city, zipcode) AS address FROM table; Output: '123 Main St, 90210' -> Option D
Quick Check:
CONCAT_WS skips NULLs cleanly [OK]
Hint: CONCAT_WS skips NULLs, no extra separators [OK]
Common Mistakes:
Expecting NULL to appear as text
Assuming CONCAT_WS adds separators for NULLs
Using CONCAT which does not skip NULLs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.