Nettoyer des chaînes brouillonnes

Nettoyer des données dans des bases de données SQL Server

Miriam Antona

Software Engineer

Supprimer les espaces en trop

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.                |
| ...  | ...                             |
Nettoyer des données dans des bases de données SQL Server

Supprimer les espaces en trop - TRIM

TRIM ( [characters ] string )
  • Offert depuis SQL Server 2017
  • Supprime les caractères précisés au début et à la fin d'une chaîne
  • Supprime les espaces si aucun caractère n'est précisé
SELECT TRIM('   JetBlue Airways    ');
JetBlue Airways
Nettoyer des données dans des bases de données SQL Server

Supprimer les espaces en trop - RTRIM et LTRIM

  • Pour les versions antérieures à SQL Server 2017 : RTRIM et LTRIM.
-- Supprime tous les espaces de fin
RTRIM ( character_expression )
-- Supprime tous les espaces de début
LTRIM ( character_expression )
SELECT LTRIM(RTRIM('   JetBlue Airways    '));
JetBlue Airways
Nettoyer des données dans des bases de données SQL Server

Supprimer les espaces en trop

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.              |
| ...  | ...                          |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes

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       |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - REPLACE

« Fl » / « fl » / « Florida » -> « Florida »

REPLACE ( string_to_replace , occurrences , string_replacement )
  • Remplace toutes les occurrences d'une chaîne par une autre

  • Les comparaisons suivent l'interclassement de l'entrée

    • Utilisez COLLATE pour comparer avec un interclassement précis
    • Supposons que l'interclassement d'entrée est insensible à la casse
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - 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  |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - 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       |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - 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       |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - 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            |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - REPLACE + UPPER

UPPER ( character_expression )
  • Convertit une chaîne en majuscules
SELECT 
    airport_code, airport_name, airport_city, 
        UPPER(
              REPLACE(airport_state, 'Florida', 'FL')
        ) AS airport_state
FROM airports
ORDER BY airport_state
Nettoyer des données dans des bases de données SQL Server

Uniformiser les chaînes - 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            |
| ...          | ...                                     | ...             | ...           |
Nettoyer des données dans des bases de données SQL Server

Passons à la pratique !

Nettoyer des données dans des bases de données SQL Server

Preparing Video For Download...