Clause LIKE PostgreSQL
Dans la base de données PostgreSQL, si nous voulons récupérer des données contenant certains caractères, nous pouvons utiliser la clauseLIKE.
Dans la clause LIKE, elle est généralement utilisée en combinaison avec des caractères génériques. Les caractères génériques représentent n'importe quels caractères. Dans PostgreSQL, il existe principalement les deux caractères génériques suivants :
- signe de pourcentage%
- Trait de soulignement_
Si les deux caractères génériques ci-dessus ne sont pas utilisés, la clause LIKE et le signe égal (=)=donnent les mêmes résultats.
Syntaxe
Voici la syntaxe générale pour utiliser la clause LIKE avec le signe de pourcentage%et le trait de soulignement_pour récupérer des données depuis la base de données :
SELECT FROM table_name WHERE column LIKE 'XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE '%XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE 'XXXX_'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX_';
Vous pouvez spécifier toutes les conditions de votre choix dans la clause WHERE.
Vous pouvez utiliser AND ou OR pour spécifier une ou plusieurs conditions.
XXXXPeut être un nombre ou un caractère quelconque.
Exemples
Ce qui suit montre dans les instructions LIKE%et_quelques différences :
| Exemple | Description |
|---|---|
| WHERE SALARY::text LIKE '200%' | Trouvez les données dans le champ SALARY qui commencent par 200. |
| WHERE SALARY::text LIKE '%200%' | Trouvez les données dans le champ SALARY qui contiennent les caractères 200. |
| WHERE SALARY::text LIKE '_00%' | Trouvez les données dans le champ SALARY qui ont 00 aux deuxième et troisième positions. |
| WHERE SALARY::text LIKE '2_%_%' | Trouvez les données dans le champ SALARY qui commencent par 2 et ont une longueur de caractères supérieure à 3. |
| WHERE SALARY::text LIKE '%2' | Trouvez les données dans le champ SALARY qui se terminent par 2. |
| WHERE SALARY::text LIKE '_2%3' | Trouvez les données dans le champ SALARY où 2 est en deuxième position et se terminent par 3. |
| WHERE SALARY::text LIKE '2___3' | Trouvez les données dans le champ SALARY qui commencent par 2, se terminent par 3 et comportent 5 chiffres. |
Dans PostgreSQL, la clause LIKE ne peut être utilisée que pour comparer des caractères. Par conséquent, dans les exemples ci-dessus, nous devons convertir les types de données entiers en types de données chaîne.
Créez la table COMPANY (Télécharger le fichier SQL COMPANY), avec le contenu de données suivant :
exampledb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
L'exemple suivant trouvera les données dont l'AGE commence par 2 :
exampledb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';
Les résultats suivants sont obtenus :
id | name | age | address | salary ----+-------+-----+-------------+-------- 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 (7 rows)
L'exemple suivant trouvera les données dans le champ address qui contient-le caractère :
exampledb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
Les résultats sont les suivants :
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows)Autres extensions