104 votes

Condition de TYPE SQL à vérifier pour un entier ?

J'utilise un ensemble de conditions de TYPE SQL pour parcourir l'alphabet et lister tous les éléments commençant par la lettre appropriée, par exemple pour obtenir tous les livres où le titre commence par la lettre "A" :

SELECT * FROM books WHERE title ILIKE "A%"

C'est bien pour les lettres, mais comment lister tous les éléments commençant par un nombre ? Pour ce que ça vaut, c'est sur une base de données Postgres.

195voto

Johannes Weiß Points 19013

Cela sélectionnera (par une regex) chaque livre qui a un titre commençant par un nombre, est-ce ce que vous voulez ?

SELECT * FROM books WHERE title ~ '^[0-9]'

si vous voulez des entiers qui commencent par des chiffres spécifiques, vous pouvez utiliser :

SELECT * FROM books WHERE CAST(price AS TEXT) LIKE '123%'

ou utilisez (si tous vos nombres ont le même nombre de chiffres (une contrainte serait alors utile))

SELECT * FROM books WHERE price BETWEEN 123000 AND 123999;

24voto

Vinko Vrsalovic Points 116138

PostgreSQL™ prend en charge les correspondances d'expressions régulières.

Donc, votre exemple ressemblerait à

SELECT * FROM books WHERE title ~ '^\d+ ?' 

Cela correspondra à un titre commençant par un ou plusieurs chiffres et un espace optionnel

18voto

gellezzz Points 1087

Si vous souhaitez effectuer une recherche sous forme de chaîne, vous pouvez lancer un texte comme ceci :

SELECT * FROM books WHERE price::TEXT LIKE '123%'

6voto

Charlie 木匠 Points 486

Testé sur PostgreSQL 9.5 :

-- uniquement des chiffres

select * from books where title ~ '^[0-9]*$';

ou,

select * from books where title SIMILAR TO '[0-9]*';

-- commencer par le chiffre

select * from books where title ~ '^[0-9]+';

1voto

skensell Points 33

Je suis en retard à la fête ici, mais si vous avez affaire à des entiers d'une longueur fixe, vous pouvez simplement faire une comparaison d'entiers :

SELECT * FROM books WHERE price > 89999 AND price < 90100;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X