Làm sạch chuỗi lộn xộn

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

Miriam Antona

Software Engineer

Xóa khoảng trắng thừa

SELECT * FROM carriers
| code | name                            |
|------|---------------------------------|
| YV   | Mesa Airlines Inc.              |
| AA   |   American Airlines Inc.        |
| B6   |   JetBlue Airways               |
| DL   |   Delta Air Lines Inc.          |
| HA   |   Hawaiian Airlines Inc.        |
| MQ   |   American Eagle Airlines Inc.  |
| EV   |  ExpressJet Airlines Inc.       |
| UA   |  United Air Lines Inc.          |
| US   |  US Airways Inc.                |
| ...  | ...                             |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Xóa khoảng trắng thừa - TRIM

TRIM ( [characters ] string )
  • Có từ SQL Server 2017
  • Xóa ký tự chỉ định ở đầu và cuối chuỗi
  • Nếu không chỉ định, sẽ xóa khoảng trắng
SELECT TRIM('   JetBlue Airways    ');
JetBlue Airways
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Xóa khoảng trắng thừa - RTRIM và LTRIM

  • Với phiên bản cũ hơn SQL Server 2017 -> RTRIMLTRIM.
-- Xóa toàn bộ khoảng trắng ở cuối
RTRIM ( character_expression )
-- Xóa toàn bộ khoảng trắng ở đầu
LTRIM ( character_expression )
SELECT LTRIM(RTRIM('   JetBlue Airways    '));
JetBlue Airways
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Xóa khoảng trắng thừa

SELECT code, TRIM(name) AS name FROM carriers
SELECT code, LTRIM(RTRIM(name)) AS name FROM carriers
| code | name                         |
|------|------------------------------|
| YV   | Mesa Airlines Inc.           |
| AA   | American Airlines Inc.       |
| B6   | JetBlue Airways              |
| DL   | Delta Air Lines Inc.         |
| HA   | Hawaiian Airlines Inc.       |
| US   | US Airways Inc.              |
| ...  | ...                          |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi

SELECT * FROM airports 
ORDER BY airport_state
| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| ...          | ...                                     | ...             | ...           |
| MIA          | Miami International                     | Miami           | fl            |
| TPA          | Tampa International                     | Tampa           | Fl            |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | FL            |
| MCO          | Orlando International                   | Orlando         | Florida       |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE

"Fl" / "fl" / "Florida" -> "Florida"

REPLACE ( string_to_replace , occurrences , string_replacement )
  • Thay mọi lần xuất hiện của một chuỗi bằng chuỗi khác

  • So sánh dựa trên collation của đầu vào

    • Dùng COLLATE để so sánh theo collation cụ thể
    • Giả sử collation của đầu vào không phân biệt hoa/thường
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE

SELECT 
    airport_code, airport_name, airport_city, 
    REPLACE(airport_state, 'FL', 'Florida') AS airport_state
FROM airports
ORDER BY airport_state
| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| ...          | ...                                     | ...             | ...           |
| MIA          | Miami International                     | Miami           | Florida       |
| TPA          | Tampa International                     | Tampa           | Florida       |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | Florida       |
| MCO          | Orlando International                   | Orlando         | Floridaorida  |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE

SELECT 
    airport_code, airport_name, airport_city, 
    REPLACE
        (REPLACE(airport_state, 'FL', 'Florida'),
         'Floridaorida', 'Florida') AS airport_state
FROM airports
ORDER BY airport_state
| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| MCO          | Orlando International                   | Orlando         | Florida       |
| TPA          | Tampa International                     | Tampa           | Florida       |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | Florida       |
| MIA          | Miami International                     | Miami           | Florida       |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE + CASE

SELECT airport_code, airport_name, airport_city, 
    CASE
        WHEN airport_state <> 'Florida' THEN REPLACE(airport_state, 'FL', 'Florida')
        ELSE airport_state 
    END AS airport_state
FROM airports
ORDER BY airport_state
| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| MCO          | Orlando International                   | Orlando         | Florida       |
| TPA          | Tampa International                     | Tampa           | Florida       |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | Florida       |
| MIA          | Miami International                     | Miami           | Florida       |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE + UPPER

"Fl" / "fl" / "Florida" -> "FL"

SELECT 
    airport_code, airport_name, airport_city, 
    REPLACE(airport_state, 'Florida', 'FL') AS airport_state
FROM airports
ORDER BY airport_state
| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| MCO          | Orlando International                   | Orlando         | FL            |
| TPA          | Tampa International                     | Tampa           | Fl            |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | FL            |
| MIA          | Miami International                     | Miami           | fl            |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE + UPPER

UPPER ( character_expression )
  • Chuyển chuỗi về chữ hoa
SELECT 
    airport_code, airport_name, airport_city, 
        UPPER(
              REPLACE(airport_state, 'Florida', 'FL')
        ) AS airport_state
FROM airports
ORDER BY airport_state
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Thống nhất chuỗi - REPLACE + UPPER

| airport_code | airport_name                            | airport_city    | airport_state |
|--------------|-----------------------------------------|-----------------|---------------|
| ...          | ...                                     | ...             | ...           |
| MCO          | Orlando International                   | Orlando         | FL            |
| TPA          | Tampa International                     | Tampa           | FL            |
| FLL          | Fort Lauderdale-Hollywood International | Fort Lauderdale | FL            |
| MIA          | Miami International                     | Miami           | FL            |
| ...          | ...                                     | ...             | ...           |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Ayo berlatih!

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

Preparing Video For Download...