Bir sütundaki veriyi birden çok sütuna ayırma

SQL Server Veritabanlarında Veri Temizleme

Miriam Antona

Software Engineer

Ürünleri ve adetleri ayırma

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         |
| ...                | ...          |
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

| product_name_units |
|--------------------|
| notebooks-150      |
| product_name | units |
|--------------|-------|
| notebooks    | 150   |
SUBSTRING(string, start, length)
CHARINDEX(substring, string [,start])
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

SELECT SUBSTRING ('notebooks-150', 1, CHARINDEX('-', 'notebooks-150') - 1) AS product_name
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

SELECT SUBSTRING ('notebooks-150', 1, 9) AS product_name
| product_name |
|--------------|
| notebooks    |
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

SELECT CAST(
    SUBSTRING('notebooks-150', CHARINDEX('-', 'notebooks-150') + 1, LEN('notebooks-150')) 
    AS INT) units
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

SELECT CAST(
    SUBSTRING('notebooks-150', 11, LEN('notebooks-150')) 
    AS INT) units
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

SELECT CAST(
    SUBSTRING('notebooks-150', 11, 13) 
    AS INT) units
| units |
|-------|
| 150   |
SQL Server Veritabanlarında Veri Temizleme

SUBSTRING ve CHARINDEX kullanma

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   |
SQL Server Veritabanlarında Veri Temizleme

LEFT, RIGHT ve REVERSE kullanma

LEFT(string, number_of_chars)
  • Verilen dizgenin solundan belirtilen sayıda karakter alır
RIGHT(string, number_of_chars)
  • Verilen dizgenin sağından belirtilen sayıda karakter alır
REVERSE(string_expression)
  • Dizgeyi ters çevirir
SQL Server Veritabanlarında Veri Temizleme

LEFT, RIGHT ve REVERSE kullanma

SELECT
    LEFT('notebooks-150', CHARINDEX('-', 'notebooks-150') - 1) AS product_name,
    RIGHT('notebooks-150', CHARINDEX('-', REVERSE('notebooks-150')) - 1) AS units
SQL Server Veritabanlarında Veri Temizleme

LEFT, RIGHT ve REVERSE kullanma

SELECT
    LEFT('notebooks-150', 9) AS product_name,
    RIGHT('notebooks-150', CHARINDEX('-', REVERSE('notebooks-150')) - 1) AS units
SQL Server Veritabanlarında Veri Temizleme

LEFT, RIGHT ve REVERSE kullanma

SELECT
    LEFT('notebooks-150', 9) AS product_name,
    RIGHT('notebooks-150', 4 - 1) AS units
SQL Server Veritabanlarında Veri Temizleme

LEFT, RIGHT ve REVERSE kullanma

SELECT
    LEFT('notebooks-150', 9) AS product_name,
    RIGHT('notebooks-150', 3) AS units
| product_name | units |
|--------------|-------|
| notebooks    | 150   |
SQL Server Veritabanlarında Veri Temizleme

Hadi pratik yapalım!

SQL Server Veritabanlarında Veri Temizleme

Preparing Video For Download...