

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fonction JSON\$1EXTRACT\$1PATH\$1TEXT
<a name="JSON_EXTRACT_PATH_TEXT"></a>

**Note**  
JSON\$1PARSE et ses fonctions associées analysent les valeurs JSON en tant que SUPER, qu’Amazon Redshift analyse plus efficacement que VARCHAR.  
Au lieu d’utiliser JSON\$1EXTRACT\$1PATH\$1TEXT, nous vous recommandons d’analyser vos chaînes JSON en utilisant [Fonction JSON\$1PARSE](JSON_PARSE.md) pour obtenir une valeur SUPER. Ensuite, recherchez l’élément souhaité à l’aide de la syntaxe `value.attribute`. Pour plus d’informations sur l’interrogation des éléments d’un tableau dans des valeurs SUPER, consultez [Interrogation de données semi-structurées](query-super.md).

La fonction JSON\$1EXTRACT\$1PATH\$1TEXT renvoie la valeur de la paire clé-valeur référencée par une série d’éléments de chemin dans une chaîne JSON. Le chemin d’accès JSON peut s’imbriquer à une profondeur de près de cinq niveaux. Les éléments de chemin d’accès sont sensible à la casse. Si un élément de chemin n’existe pas dans la chaîne JSON, JSON\$1EXTRACT\$1PATH\$1TEXT renvoie `NULL`.

Si l’argument *null\$1if\$1invalid* a la valeur `TRUE` et que la chaîne JSON n’est pas valide, la fonction renvoie `NULL` au lieu de renvoyer une erreur.

JSON\$1EXTRACT\$1PATH\$1TEXT a une taille de données maximale de 64 Ko. Ainsi, si un enregistrement JSON est supérieur à 64 Ko, son traitement avec JSON\$1EXTRACT\$1PATH\$1TEXT entraîne une erreur. 

Pour plus d’informations sur les fonctions JSON supplémentaires, consultez [Fonctions JSON](json-functions.md). Pour plus d’informations sur l’utilisation de JSON, consultez [Exécution de la commande COPY à partir du format JSON](copy-usage_notes-copy-from-json.md).

## Syntaxe
<a name="JSON_EXTRACT_PATH_TEXT-synopsis"></a>

```
JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )
```

## Arguments
<a name="JSON_EXTRACT_PATH_TEXT-arguments"></a>

 *json\$1string*  
Chaîne JSON au bon format.

*path\$1elem*  
Élément de chemin d’accès dans une chaîne JSON. Un élément de chemin d’accès est obligatoire. Des éléments de chemin supplémentaires peuvent être spécifiés, jusqu’à une profondeur de cinq niveaux.

*null\$1if\$1invalid*  
(Facultatif) Valeur `BOOLEAN` qui spécifie s’il faut renvoyer `NULL` quand la chaîne JSON en entrée n’est pas valide au lieu de renvoyer une erreur. Pour renvoyer `NULL` si la chaîne JSON n’est pas valide, spécifiez `TRUE` (`t`). Pour renvoyer une erreur si la chaîne JSON n’est pas valide, spécifiez `FALSE` (`f`). La valeur par défaut est `FALSE`.

Dans une chaîne JSON, Amazon Redshift reconnaît `\n` comme un caractère de nouvelle ligne et `\t` comme un caractère de tabulation. Pour charger une barre oblique inverse, précédez-la d’une barre oblique inverse (`\\`). Pour plus d'informations, consultez [Caractères d’échappement dans JSON](copy-usage_notes-copy-from-json.md#copy-usage-json-escape-characters).

## Type de retour
<a name="JSON_EXTRACT_PATH_TEXT-return"></a>

`VARCHAR`  
Chaîne `VARCHAR` représentant la valeur JSON référencée par les éléments de chemin.

## Exemples
<a name="JSON_EXTRACT_PATH_TEXT-examples"></a>

Pour renvoyer la valeur du chemin `'f4', 'f6'`, utilisez l’exemple suivant.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6');

+------------------------+
| json_extract_path_text |
+------------------------+
| star                   |
+------------------------+
```

Pour renvoyer une erreur si la chaîne JSON n’est pas valide, utilisez l’exemple suivant.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6');

ERROR: invalid json object {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}
```

Pour définir *null\$1if\$1invalid* sur *TRUE* afin que l’instruction renvoie `NULL` en cas de chaîne JSON non valide au lieu de renvoyer une erreur, utilisez l’exemple suivant.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true);

+------------------------+
| json_extract_path_text |
+------------------------+
| NULL                   |
+------------------------+
```

Prenons l’exemple suivant, qui sélectionne la valeur pour le chemin `'farm', 'barn', 'color'`, où la valeur récupérée se situe au troisième niveau, utilisez l’exemple suivant. Cet exemple est formaté avec un outil de validation JSON, pour le rendre plus facile à lire.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
    "farm": {
        "barn": {
            "color": "red",
            "feed stocked": true
        }
    }
}', 'farm', 'barn', 'color');
+------------------------+
| json_extract_path_text |
+------------------------+
| red                    |
+------------------------+
```

Pour renvoyer `NULL` si l’élément `'color'` est manquant, utilisez l’exemple suivant. Cet exemple est formaté avec un outil de validation JSON.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
    "farm": {
        "barn": {}
    }
}', 'farm', 'barn', 'color');

+------------------------+
| json_extract_path_text |
+------------------------+
| NULL                   |
+------------------------+
```

Si la chaîne JSON est valide, la tentative d’extraction d’un élément manquant renvoie `NULL`.

Pour renvoyer la valeur du chemin `'house', 'appliances', 'washing machine', 'brand'`, utilisez l’exemple suivant.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
  "house": {
    "address": {
      "street": "123 Any St.",
      "city": "Any Town",
      "state": "FL",
      "zip": "32830"
    },
    "bathroom": {
      "color": "green",
      "shower": true
    },
    "appliances": {
      "washing machine": {
        "brand": "Any Brand",
        "color": "beige"
      },
      "dryer": {
        "brand": "Any Brand",
        "color": "white"
      }
    }
  }
}', 'house', 'appliances', 'washing machine', 'brand');  

+------------------------+
| json_extract_path_text |
+------------------------+
| Any Brand              |
+------------------------+
```

L’exemple suivant crée un exemple de table et le remplit avec des valeurs SUPER, puis renvoie la valeur du chemin `'f2'` pour les deux lignes.

```
CREATE TABLE json_example(id INT, json_text SUPER);

INSERT INTO json_example VALUES
(1, JSON_PARSE('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}')),
(2, JSON_PARSE('{
    "farm": {
        "barn": {
            "color": "red",
            "feed stocked": true
        }
    }
}'));

SELECT * FROM json_example;
id          | json_text
------------+--------------------------------------------
1           | {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}
2           | {"farm":{"barn":{"color":"red","feed stocked":true}}}
 

SELECT id, JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(json_text), 'f2') FROM json_example;
         
id          | json_text
------------+--------------------------------------------
1           | {"f3":1}
2           |
```

Considérez les exemples d’instructions suivants. Le *path\$1elem* fourni est NULL, donc JSON\$1EXTRACT\$1PATH\$1TEXT renvoie NULL quelle que soit la valeur des autres paramètres. 

```
--Statement where path_elem is NULL and json_string is valid JSON.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}',NULL);

 json_extract_path_text
------------------------
                   NULL

--Statement where only one path_elem is NULL.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4',NULL);

 json_extract_path_text
------------------------
                   NULL
                   
--Statement where path_elem is NULL and json_string is invalid JSON.
SELECT json_extract_path_text('invalid_json', NULL);

 json_extract_path_text
------------------------
                   NULL

--Statement where path_elem is NULL and null_if_invalid is FALSE.
SELECT json_extract_path_text(NULL, 0, FALSE);

 json_extract_path_text
------------------------
                   NULL
```

Considérez les exemples d’instructions suivants. Lorsque *null\$1if\$1invalid* est TRUE, JSON\$1EXTRACT\$1PATH\$1TEXT renvoie NULL lorsque *json\$1string* est un JSON non valide. Si *null\$1if\$1invalid* est FALSE ou n’est pas défini, la fonction renvoie une erreur lorsque *json\$1string* n’est pas valide.

```
--Statement with invalid JSON where null_if_invalid is TRUE.
SELECT json_extract_path_text('invalid_json', 0, TRUE);

 json_extract_path_text
------------------------
                   NULL
                                                    
--Statement with invalid JSON where null_if_invalid is FALSE.
SELECT json_extract_path_text('invalid_json', 0, FALSE);

ERROR:  JSON parsing error
```

Prenons les exemples suivants, où *json\$1string* est un JSON valide et *path\$1elem* fait référence à une valeur JSON `null`. Dans ce cas, JSON\$1EXTRACT\$1PATH\$1TEXT renvoie NULL. De même, lorsque *path\$1elem* fait référence à une valeur inexistante, JSON\$1EXTRACT\$1PATH\$1TEXT renvoie NULL, quelle que soit la valeur de *null\$1if\$1invalid*.

```
--Statement selecting a null value.
SELECT json_extract_path_text('[null]', 0);

  json_extract_path_text  
-------------------------
                    NULL   
                             
--Statement selecting a non-existing value.               
SELECT json_extract_path_text('{}', 'a');
       
  json_extract_path_text  
-------------------------
                    NULL
```