Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2006, 03h18   #1
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
Par défaut Starting With : Possible ?

Salut !
je voudrais savoir si il est possible d'utiliser "starting with" dans les requetes postgresql pour trouver a partir des premieres lettre d'un string ?
je ne veut PAS utiliser de methode lente comme like
par exemple sous Firebird on peut faire ca :
Code :
1
2
SELECT * FROM TESTE1
    WHERE TEXTE starting WITH 'abcd'
c'est possible de faire quelque chose dans le meme genre ?
merci
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2006, 16h25   #2
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
bonjour, tu peux essayer :
SELECT * FROM TESTE1
WHERE substring(TEXTE from 1 for 5)= 'abcd'
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2006, 17h32   #3
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
et si je connais pas la longueur de la chaine ? :p
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2006, 17h59   #4
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
dans postgresql tu peux utiliser les opérateurs like et match:
Code :
1
2
3
 
SELECT * FROM TESTE1 WHERE TEXTE starting LIKE 'abcd%';
SELECT * FROM TESTE1 WHERE TEXTE starting ~* '^abcd';
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 02h34   #5
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
oui mais j'ai entendu dire que c'etait treeees lent (non utilisation des index)
si non , tes requetes marche pas (il reconnais pas starting)
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 09h17   #6
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 291
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 291
Points : 2 738
Points : 2 738
Citation:
Envoyé par kedare
oui mais j'ai entendu dire que c'etait treeees lent (non utilisation des index)
si non , tes requetes marche pas (il reconnais pas starting)
like peut utiliser les index si le % n'est pas en tête de pattern…
(si ce qui sera votre cas…)
+ quelques autres conditions expliquées dans la doc et la FAQ Postgre…

http://www.postgresql.org/docs/faqs.FAQ_french.html
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 09h58   #7
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
Citation:
Envoyé par kedare
et si je connais pas la longueur de la chaine ? :p
SELECT * FROM TESTE1
WHERE substring(TEXTE from 1 for char_length(var))= var
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 13h18   #8
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
autant pour moi, il faut que je fasse plus gaffe au copie coller le code etait:
Code :
1
2
3
 
SELECT * FROM TESTE1 WHERE TEXTE LIKE 'abcd%';
SELECT * FROM TESTE1 WHERE TEXTE ~* '^abcd';
sinon pour ce qui est de la lenteur, je ne suis pas spécialiste dans l'optimisation des requêtes, mais j'utilise ce genre de requêtes sur des jointures comportant des tables pouvant aller jusqu'à 400000 enregistrements avec des index sur les colonnes où chercher l'enregistrement, le résultat est rapide.
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h36.


 
 
 
 
Partenaires

Hébergement Web