Tách dữ liệu cột

Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Darryl Reeves, Ph.D.

Industry Assistant Professor, New York University

Tách cột

 camis    | inspection_date |                    violation                    | ... 
 ---------+-----------------+-------------------------------------------------+-----
 ...      | ...             | ...                                             | ...
 50038736 | 03/29/2018      | 09B Thawing procedures                          | ...
 50033304 | 12/18/2019      | 02B Hot food item not held at or above 140º ... | ...
 50081658 | 12/13/2018      | 06F Wiping cloths soiled or not stored in sa... | ...
 50033733 | 02/12/2019      | 10B Plumbing not properly installed or maint... | ...
 40559634 | 08/22/2017      | 04N Filth flies or food/refuse/sewage-associ... | ...
 ...      | ...             | ...                                             | ...
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tìm vị trí bắt đầu chuỗi con với STRPOS()

STRPOS(source_string, search_string)

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi.

SELECT
  STRPOS('09B Thawing procedures', ' ');
4
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tìm vị trí bắt đầu chuỗi con với STRPOS()

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi.

SELECT
  STRPOS('09B Thawing procedures', '?');
0
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tìm vị trí bắt đầu chuỗi con với STRPOS()

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi.

SELECT
  STRPOS('09B Thawing procedures', ' ');
4
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Trích chuỗi con với SUBSTRING()

SUBSTRING(source_string FROM start_pos FOR num_chars)

Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Trích chuỗi con với SUBSTRING()

SUBSTRING('Homerun' FROM 1 FOR 4)Home

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi.

SELECT
  SUBSTRING(
      '09B Thawing procedures'
      FROM 1
      FOR STRPOS('09B Thawing procedures', ' ') - 1
  );
09B
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Trích chuỗi con với SUBSTRING()

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi. Hai mũi tên xanh chỉ phần mô tả vi phạm.

Yêu cầu:

  • Vị trí bắt đầu mô tả vi phạm
  • Số ký tự của mô tả
SELECT
  STRPOS('09B Thawing procedures', ' ') + 1;
5
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tính độ dài chuỗi với LENGTH()

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi. Dòng chữ "số ký tự?" nằm trên phần mô tả vi phạm.

LENGTH(string)INTEGER

SELECT LENGTH('hello')
5
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tính độ dài chuỗi với LENGTH()

LENGTH('09B Thawing procedures')22

STRPOS('09B Thawing procedures', ' ')4

LENGTH('09B Thawing procedures') - STRPOS('09B Thawing procedures', ' ')18

LENGTH('Thawing procedures')18

Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tính độ dài chuỗi với LENGTH()

SELECT 
    LENGTH('09B Thawing procedures') - 
    STRPOS('09B Thawing procedures', ' ');
18

Sơ đồ chuỗi vi phạm "09B Thawing procedures" với chỉ số: 1 tại ký tự 0, 4 tại khoảng trắng đầu tiên, và 22 tại chữ s cuối chuỗi. Hai mũi tên xanh chỉ phần mô tả vi phạm.

Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Ghép các phần lại

SELECT 
    SUBSTRING(
      '09B Thawing procedures'
      FROM
        STRPOS('09B Thawing procedures', ' ')
        + 1
      FOR
        LENGTH('09B Thawing procedures')
        - STRPOS('09B Thawing procedures', ' ')
    );
Thawing procedures
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tách cột violation

SELECT 
    camis, 
    inspection_date, 

    SUBSTRING(
      violation 
      FROM 1 
      FOR STRPOS(violation, ' ') - 1
    ) AS violation_code, 

    SUBSTRING(
      violation 
      FROM STRPOS(violation, ' ') + 1 
      FOR LENGTH(violation) - STRPOS(violation, ' ')
    ) AS violation_description 
FROM 
    restaurant_inspection;
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tách cột violation

 camis    | inspection_date |                    violation                    | ... 
 ---------+-----------------+-------------------------------------------------+-----
 ...      | ...             | ...                                             | ...
 50038736 | 03/29/2018      | 09B Thawing procedures                          | ...
 50033304 | 12/18/2019      | 02B Hot food item not held at or above 140º ... | ...
 50081658 | 12/13/2018      | 06F Wiping cloths soiled or not stored in sa... | ...
 50033733 | 02/12/2019      | 10B Plumbing not properly installed or maint... | ...
 40559634 | 08/22/2017      | 04N Filth flies or food/refuse/sewage-associ... | ...
 ...      | ...             | ...                                             | ...
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Tách cột violation

 camis    | inspection_date | violation_code |            violation_description            | ... 
 ---------+-----------------+----------------+---------------------------------------------+-----
 ...      | ...             | ...            | ...                                         | ...
 50038736 | 03/29/2018      | 09B            | Thawing procedures                          | ...
 50033304 | 12/18/2019      | 02B            | Hot food item not held at or above 140º ... | ...
 50081658 | 12/13/2018      | 06F            | Wiping cloths soiled or not stored in sa... | ...
 50033733 | 02/12/2019      | 10B            | Plumbing not properly installed or maint... | ...
 40559634 | 08/22/2017      | 04N            | Filth flies or food/refuse/sewage-associ... | ...
 ...      | ...             | ...            | ...                                         | ...
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Ayo berlatih!

Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL

Preparing Video For Download...