String manipulation powers data cleaning, formatting, and reporting. SQL provides built-in functions to concatenate text, extract substrings, remove whitespace, replace values, and adjust case.
| Function | Purpose | Example |
|---|---|---|
| CONCAT() | Combine strings | CONCAT(first_name, ' ', last_name) |
| SUBSTRING() | Extract characters | SUBSTRING('Database', 1, 4) โ Data |
| LENGTH() | Count characters | LENGTH('SQL') โ 3 |
| TRIM() | Remove spaces | TRIM(' SQL ') โ SQL |
| REPLACE() | Swap text | REPLACE('Hello SQL', 'SQL', 'World') |
| UPPER()/LOWER() | Change case | UPPER('sql') โ SQL |
| LEFT()/RIGHT() | Grab start or end | LEFT('Database', 4) โ Data |
| POSITION() | Find substring index | POSITION('@' IN email) |
| CONCAT_WS() | Concatenate with delimiter | CONCAT_WS('-', '2025', '10', '24') |
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
department
FROM employees;
Produces readable names for reports and exports.
SELECT SUBSTRING('Information', 1, 4) AS extract_part;
-- Output: Info
Use SUBSTRING to pull a portion of a string starting at a specific position.
SELECT
TRIM(' SQL Functions ') AS trimmed,
LTRIM(' SQL') AS left_trimmed,
RTRIM('SQL ') AS right_trimmed;
Critical when cleaning user-entered data.
SELECT REPLACE('I love SQL', 'SQL', 'Databases') AS new_text;
SELECT
UPPER('developer') AS upper_case,
LOWER('SQL TRAINING') AS lower_case;
SELECT
email,
LENGTH(email) AS email_length,
POSITION('@' IN email) AS at_pos
FROM users;
Combine length and position checks to flag malformed emails.
SELECT
LEFT('Database', 4) AS left_part,
RIGHT('Database', 4) AS right_part;
SELECT
LOWER(LEFT(email, POSITION('@' IN email) - 1)) AS username
FROM users;
| Function | MySQL | SQL Server | PostgreSQL | Oracle |
|---|---|---|---|---|
| String length | LENGTH() | LEN() | LENGTH() | LENGTH() |
| Substring | SUBSTRING() | SUBSTRING() | SUBSTRING() | SUBSTR() |
| Position | POSITION() | CHARINDEX() | POSITION() | INSTR() |
| Concatenate | CONCAT() | + | CONCAT() | CONCAT() |