PostgreSQL - Clause LIKE

Le PostgreSQL LIKEL'opérateur est utilisé pour faire correspondre les valeurs de texte à un modèle à l'aide de caractères génériques. Si l'expression de recherche peut correspondre à l'expression de modèle, l'opérateur LIKE retournera true, ce qui est1.

Deux caractères génériques sont utilisés en conjonction avec l'opérateur LIKE -

  • Le signe de pourcentage (%)
  • Le trait de soulignement (_)

Le signe de pourcentage représente zéro, un ou plusieurs nombres ou caractères. Le trait de soulignement représente un seul nombre ou caractère. Ces symboles peuvent être utilisés dans des combinaisons.

Si l'un de ces deux signes n'est pas utilisé en conjonction avec la clause LIKE, alors le LIKE agit comme l'opérateur égal.

Syntaxe

La syntaxe de base de% et _ est la suivante -

SELECT FROM table_name
WHERE column LIKE 'XXXX%'

or

SELECT FROM table_name
WHERE column LIKE '%XXXX%'

or

SELECT FROM table_name
WHERE column LIKE 'XXXX_'

or

SELECT FROM table_name
WHERE column LIKE '_XXXX'

or

SELECT FROM table_name
WHERE column LIKE '_XXXX_'

Vous pouvez combiner N nombre de conditions à l'aide des opérateurs AND ou OR. Ici, XXXX peut être n'importe quelle valeur numérique ou chaîne.

Exemple

Voici un certain nombre d'exemples montrant une partie WHERE ayant une clause LIKE différente avec les opérateurs '%' et '_' -

S. Non. Déclaration et description
1

WHERE SALARY::text LIKE '200%'

Recherche toutes les valeurs commençant par 200

2

WHERE SALARY::text LIKE '%200%'

Recherche toutes les valeurs qui ont 200 dans n'importe quelle position

3

WHERE SALARY::text LIKE '_00%'

Recherche toutes les valeurs qui ont 00 dans les deuxième et troisième positions

4

WHERE SALARY::text LIKE '2_%_%'

Recherche toutes les valeurs commençant par 2 et comportant au moins 3 caractères

5

WHERE SALARY::text LIKE '%2'

Recherche toutes les valeurs qui se terminent par 2

6

WHERE SALARY::text LIKE '_2%3'

Recherche toutes les valeurs qui ont 2 en deuxième position et se terminent par 3

sept

WHERE SALARY::text LIKE '2___3'

Recherche toutes les valeurs d'un nombre à cinq chiffres commençant par 2 et se terminant par 3

Postgres LIKE est une comparaison de chaînes uniquement. Par conséquent, nous devons convertir explicitement la colonne entière en chaîne comme dans les exemples ci-dessus.

Prenons un exemple réel, considérons la table COMPANY , ayant des enregistrements comme suit -

# 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)

Voici un exemple qui afficherait tous les enregistrements de la table COMPANY où AGE commence par 2 -

testdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';

Cela produirait le résultat suivant -

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)

Voici un exemple qui afficherait tous les enregistrements de la table COMPANY où ADDRESS aura un tiret (-) à l'intérieur du texte -

testdb=# SELECT * FROM COMPANY WHERE ADDRESS  LIKE '%-%';

Cela produirait le résultat suivant -

id | name | age |                      address              | salary
----+------+-----+-------------------------------------------+--------
  4 | Mark |  25 | Rich-Mond                                 |  65000
  6 | Kim  |  22 | South-Hall                                |  45000
(2 rows)