Cleaning Data in SQL Server Databases
Miriam Antona
Software Engineer
paper_shop_monthly_sales
| product_name_units | year_of_sale |
|--------------------|--------------|
| notebooks-150 | 2018 |
| notebooks-200 | 2019 |
| notebooks-30 | 2019 |
| pencils-100 | 2018 |
| pencils-50 | 2018 |
| pencils-130 | 2019 |
| crayons-80 | 2018 |
| ... | ... |
| product_name_units |
|--------------------|
| notebooks-150 |
| product_name | units |
|--------------|-------|
| notebooks | 150 |
SUBSTRING(string, start, length)
CHARINDEX(substring, string [,start])
SELECT SUBSTRING ('notebooks-150', 1, CHARINDEX('-', 'notebooks-150') - 1) AS product_name
SELECT SUBSTRING ('notebooks-150', 1, 9) AS product_name
| product_name |
|--------------|
| notebooks |
SELECT CAST(
SUBSTRING('notebooks-150', CHARINDEX('-', 'notebooks-150') + 1, LEN('notebooks-150'))
AS INT) units
SELECT CAST(
SUBSTRING('notebooks-150', 11, LEN('notebooks-150'))
AS INT) units
SELECT CAST(
SUBSTRING('notebooks-150', 11, 13)
AS INT) units
| units |
|-------|
| 150 |
SELECT
SUBSTRING('notebooks-150', 1, CHARINDEX('-', 'notebooks-150') - 1) product_name,
CAST
(SUBSTRING('notebooks-150', CHARINDEX('-', 'notebooks-150') + 1, LEN('notebooks-150'))
AS INT) units
| product_name | units |
|--------------|-------|
| notebooks | 150 |
LEFT(string, number_of_chars)
RIGHT(string, number_of_chars)
REVERSE(string_expression)
SELECT
LEFT('notebooks-150', CHARINDEX('-', 'notebooks-150') - 1) AS product_name,
RIGHT('notebooks-150', CHARINDEX('-', REVERSE('notebooks-150')) - 1) AS units
SELECT
LEFT('notebooks-150', 9) AS product_name,
RIGHT('notebooks-150', CHARINDEX('-', REVERSE('notebooks-150')) - 1) AS units
SELECT
LEFT('notebooks-150', 9) AS product_name,
RIGHT('notebooks-150', 4 - 1) AS units
SELECT
LEFT('notebooks-150', 9) AS product_name,
RIGHT('notebooks-150', 3) AS units
| product_name | units |
|--------------|-------|
| notebooks | 150 |
Cleaning Data in SQL Server Databases